Ответ 1
Ответ кажется просто нет.
Хотя есть много хороших других ответов, они либо просто скрывают уродство (чего я не просил), либо вводят новые проблемы (краевые случаи).
Я просто хочу знать, содержит ли переменная String сильное положительное целочисленное значение. Я НЕ хочу анализировать значение прямо сейчас.
В настоящее время я делаю:
int parsedId;
if (
(String.IsNullOrEmpty(myStringVariable) ||
(!uint.TryParse(myStringVariable, out parsedId))
)
{//..show error message}
Это уродливо - как быть более кратким?
Примечание. Я знаю о методах расширения, но мне интересно, есть ли что-то встроенное.
Ответ кажется просто нет.
Хотя есть много хороших других ответов, они либо просто скрывают уродство (чего я не просил), либо вводят новые проблемы (краевые случаи).
Вы можете использовать char.IsDigit:
bool isIntString = "your string".All(char.IsDigit)
Вернет true
если строка является числом
bool containsInt = "your string".Any(char.IsDigit)
Вернет true
если строка содержит цифру
Предполагая, что вы хотите проверить, что все символы в строке являются цифрами, вы можете использовать Enumerable.All Extension Method с Char.IsDigit Method следующим образом:
bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
Вы можете проверить, содержит ли строка только числа:
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())
// ...
Возможно, это поможет
string input = "hello123world";
bool isDigitPresent = input.Any(c => char.IsDigit(c));
ответьте msdn.
Извините, не совсем понял ваш вопрос. Так что-то вроде этого?
str.ToCharArray().Any(char.IsDigit);
Или это значение должно быть целым числом без каких-либо дополнительных строк?
if(str.ToCharArray().All(char.IsDigit(c));
Это работа для меня.
("your string goes here").All(char.IsDigit)