質問

このような文字列があります

string str =" dfdsfdsf8fdfdfd9dfdfd4"

配列をループして、文字列に数値が含まれているかどうかを確認する必要があります。

役に立ちましたか?

解決

正規表現はどうですか:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");

他のヒント

整数値を探している場合は、 intを使用できます。 TryParse

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

10進数を確認するには、int.TryParseを 10進数に置き換えます。 TryParse 。このブログ投稿とコメントをご覧ください"なぜTryParse()を使用する必要があるか詳細についてはC#" を参照してください。

10進数が必要な場合は、代わりに次の正規表現を使用できます。

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?
Microsoft.VisualBasic.Information.IsNumeric("abc"); 
quot;);

そして最後に別の代替手段(VB.NETに対して宗教的に でない場合)、Microsoft.VisualBasic名前空間のメソッドを使用できます:

<*>

文字列をループする場合は、int.TryParseを使用しないでください。代わりに、char.IsNumber();を使用してください。

例:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
str.ToCharArray().Any(x => char.IsNumber(x));

Kamalsの回答とTristarsの回答の一部を組み合わせると...

str.Any(char.IsNumber)

正規表現ではなく、最も簡潔で読みやすい方法だと思います

あなたが私のようなlinqジャンキーなら、このようにやるでしょう

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;

C#2.0では、これを試してください:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }
str.ToCharArray().Any(char.IsNumber)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top