質問
このような文字列があります
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)
所属していません StackOverflow