Чтобы проверить, имеет ли строковое значение числовое значение или нет в C#
Вопрос
У меня есть строка, подобная этой
строка 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");
}
Для проверки десятичного числа замените int.TryParse на Десятичный. TryParse . Ознакомьтесь с этой записью в блоге и комментариями " почему вы должны использовать TryParse () в C # " для получения подробной информации.
Если вам нужны десятичные числа, вы можете альтернативно использовать это регулярное выражение:
return System.Text.RegularExpressions.Regex.IsMatch(
TextValue, @"^-?\d+([\.]{1}\d*)?Microsoft.VisualBasic.Information.IsNumeric("abc");
quot;);
И, наконец, другая альтернатива (если вы не религиозно против VB.NET ), вы можете использовать метод в пространстве имен Microsoft.VisualBasic:
<*>Если вы собираетесь перебирать строку в цикле, НЕ используйте int.Попробуйте проанализировать...это слишком тяжело.Вместо этого используйте символ char .IsNumber();
пример:
foreach (char c in myString)
if (char.IsNumber(c))
return true;
str.ToCharArray().Any(x => char.IsNumber(x));
Объединение частей ответа Камалса и ответа Тристара дает ...
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)