Вопрос:
Я просто хочу знать, содержит ли переменная 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)