В С#, как проверить, содержит ли строка целое число?

Я просто хочу знать, содержит ли переменная String сильное положительное целочисленное значение. Я НЕ хочу анализировать значение прямо сейчас.

В настоящее время я делаю:

int parsedId;
if (
    (String.IsNullOrEmpty(myStringVariable) ||
    (!uint.TryParse(myStringVariable, out parsedId))
)
{//..show error message}

Это уродливо - как быть более кратким?

Примечание. Я знаю о методах расширения, но мне интересно, есть ли что-то встроенное.

Ответы

Ответ 1

Ответ кажется просто нет.

Хотя есть много хороших других ответов, они либо просто скрывают уродство (чего я не просил), либо вводят новые проблемы (краевые случаи).

Ответ 2

Вы можете использовать char.IsDigit:

     bool isIntString = "your string".All(char.IsDigit)

Вернет true если строка является числом

    bool containsInt = "your string".Any(char.IsDigit)

Вернет true если строка содержит цифру

Ответ 3

Предполагая, что вы хотите проверить, что все символы в строке являются цифрами, вы можете использовать Enumerable.All Extension Method с Char.IsDigit Method следующим образом:

bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);

Ответ 4

Вы можете проверить, содержит ли строка только числа:

Regex.IsMatch(myStringVariable, @"^-?\d+$")

Но число может быть больше Int32.MaxValue или меньше Int32.MinValue - вы должны помнить об этом.

Другая опция - создайте метод расширения и переместите уродливый код там:

public static bool IsInteger(this string s)
{
   if (String.IsNullOrEmpty(s))
       return false;

   int i;
   return Int32.TryParse(s, out i);
}

Это сделает ваш код более чистым:

if (myStringVariable.IsInteger())
    // ...

Ответ 5

Возможно, это поможет

string input = "hello123world";
bool isDigitPresent = input.Any(c => char.IsDigit(c));

ответьте msdn.

Ответ 6

Извините, не совсем понял ваш вопрос. Так что-то вроде этого?

str.ToCharArray().Any(char.IsDigit);

Или это значение должно быть целым числом без каких-либо дополнительных строк?

if(str.ToCharArray().All(char.IsDigit(c));

Ответ 7

Это работа для меня.

("your string goes here").All(char.IsDigit)