Чтобы проверить, имеет ли строковое значение числовое значение или нет в C # - PullRequest
11 голосов
/ 06 ноября 2008

У меня есть такая строка

string str = "dfdsfdsf8fdfdfd9dfdfd4"

Мне нужно проверить, содержит ли строка число, просматривая массив.

Ответы [ 8 ]

32 голосов
/ 06 ноября 2008

А как насчет регулярного выражения:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");
9 голосов
/ 06 ноября 2008

Если вы ищете целочисленное значение, вы можете использовать int.TryParse :

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

Для проверки десятичного числа замените int.TryParse на Decimal.TryParse . Прочтите этот пост в блоге и комментарии "Почему вы должны использовать TryParse () в C #" для подробностей.

Если вам нужны десятичные числа, вы можете альтернативно использовать это регулярное выражение:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?$");

И, наконец, другая альтернатива (если вы не религиозно против VB.NET ), вы можете использовать метод в пространстве имен Microsoft.VisualBasic:

Microsoft.VisualBasic.Information.IsNumeric("abc"); 
6 голосов
/ 06 ноября 2008

Если вы собираетесь перебрать строку, НЕ используйте int.TryParse ... это слишком тяжело. Вместо этого используйте char.IsNumber ();

пример:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
4 голосов
/ 21 июня 2012
str.ToCharArray().Any(x => char.IsNumber(x));
1 голос
/ 04 июля 2017

Объединение частей ответа Камалса и ответа Тристара дает ...

str.Any(char.IsNumber)

, который я считаю самым кратким и читабельным способом вместо регулярного выражения

0 голосов
/ 18 августа 2012
str.ToCharArray().Any(char.IsNumber)
0 голосов
/ 06 ноября 2008

в 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
            }
        }
0 голосов
/ 06 ноября 2008

Если вы любитель linq, как я, вы бы поступили так

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