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

Вопрос:Я просто хочу знать, содержит ли переменная String сильное положительное целочисленное значение. Я НЕ хочу анализировать значение прямо сейчас. В настоящее время я делаю: int parsedId; if ( (String.IsNullOrEmpty(myStringVariable) || (!uint.TryParse(myStringVariable, out parsedId)) ) {//..show error message} Это уродливо - как быть более кратким? Примечание. Я знаю о методах расширения, но мне интересно, есть ли

Вопрос:

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

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

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

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

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

Лучший ответ:

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

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

Ответ №1

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

bool isIntString = «your string».All(char.IsDigit)

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

bool containsInt = «your string».Any(char.IsDigit)

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

Ответ №2

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

bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit); Ответ №3

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

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()) // … Ответ №4

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

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

ответьте msdn.

Ответ №5

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

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

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

if(str.ToCharArray().All(char.IsDigit(c)); Ответ №6

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

(«your string goes here»).All(char.IsDigit)

Оцените статью
Добавить комментарий