2016-10-31 20 views
0

文字列全体で文字列全体が1文字だけであるかどうかを確認するにはどうすればよいですか?たとえば、文字列変数 "Word1"に "_"(アンダースコア)のみが含まれていることを確認したいとします。文字列内の各文字が特定の文字であるかどうかを確認するにはどうすればよいですか?

Word1 = "____"と言うことができます。どのようにして、その変数の中に文字が何もないことを確認する方法はありますか?

答えて

5

使用LINQのAllcharToTestは、任意の位置で発見された場合にのみ

char charToTest = '_'; 
var result = myString.All(x => x == charToTest); 

返しtrue。さらに、任意の位置に別の文字がある場合、ステートメントは即座にfalseを返します。

EDIT:文字列が空の場合、@ CSharpieはこれもまたtrueを返します。前String.IsNullOrEmptyため、このチェックを回避するために:あなたはLINQの(using System.Linq

if (Word1.All(c => c == '_')) 
{ 
    // only underscores 
} 
+0

注意がある場合^(_+)$にのみマッチします。あなたの最初の文は完全に正しいわけではありません。 – CSharpie

+0

@CSharpie Yeap、ヒントのおかげで、私は私の答えを更新しました。 – HimBromBeere

1

はクリーンな方法ですが、あなたはまた、このタスクのための正規表現を使用することができます。以下のような
何か:のmyStringが空になったとき、それはまた、trueを返すことを一つ以上の_

Regex regex = new Regex(@"^(_+)$"); 
    if (match.IsMatch(myString)) 
     Console.WriteLine("Matched"); 
1

Linq Allでそれを行うことができます

var result = !String.IsNullOrEmpty(myString) && myString.All(x => x == charToTest); 
+1

静的な[Regex.IsMatch](https://msdn.microsoft.com/en-us/library/sdx2bds0(v = vs.110).aspx) – CSharpie

+0

を編集することで、この問題を解決することができます。 – Tinwor

+0

静的バージョンを使用するときにインスタンス化する必要はありません。例えばRegex.IsMatch(myString、@ "^(_ +)$") – CSharpie

関連する問題