Как я могу проверить, содержит ли моя строка только числа?
Я не помню. Что-то вроде isnumeric?
Как я могу проверить, содержит ли моя строка только числа?
Я не помню. Что-то вроде isnumeric?
Просто проверьте каждый символ.
bool IsAllDigits(string s)
{
foreach (char c in s)
{
if (!char.IsDigit(c))
return false;
}
return true;
}
Или используйте LINQ.
bool IsAllDigits(string s)
{
return s.All(char.IsDigit);
}
Если вы хотите узнать, представляет ли значение, введенное в вашу программу, действительное целочисленное значение (в диапазоне int
), вы можете использовать TryParse()
. Обратите внимание, что этот подход отличается от проверки, содержит ли строка только цифры.
bool IsAllDigits(string s)
{
return int.TryParse(s, out int i);
}
Вы можете использовать Regex или int.TryParse.
См. также С# Эквивалент VB IsNumeric()
Метод int.TryParse() возвращает false для не числовых строк
Ваш вопрос непонятен. Разрешено ли .
в строке? Разрешено ли ¼
?
string source = GetTheString();
//only 0-9 allowed in the string, which almost equals to int.TryParse
bool allDigits = source.All(char.IsDigit);
bool alternative = int.TryParse(source,out result);
//allow other "numbers" like ¼
bool allNumbers = source.All(char.IsNumber);
Если вы хотите использовать Regex, вам нужно будет использовать что-то вроде этого:
string regExPattern = @"^[0-9]+$";
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(regExPattern);
return pattern.IsMatch(yourString);
public bool IsNumeric(string str)
{
return str.All(c => "0123456789".Contains(c);
}
Вы можете сделать так:
public bool IsNumeric(string val)
{
if(int.TryParse(val)) return true;
else if(double.TryParse(val)) return true;
else if(float.TryParse(val)) return true;
else return false;
}
Вы можете написать такую функцию:
public bool isStringIsNumeric(string strValue)
{
int iValue = 0;
bool canConvert = int.TryParse(strValue, out iValue);
if (int.TryParse(strValue, out iValue))
return true;
else
return false;
}
У меня есть решение... даже если я "немного" опаздываю. Это происходит следующим образом:
try
{
double test = Convert.ToDouble(string);
}
catch(Exception e)
{
MessageBox.show("String contains non numeric characters!");
}
Я знаю, что попытка try-catch должна использоваться только тогда, когда это необходимо, потому что это немного снижает эффективность, но если эффективность не является проблемой, вы можете пойти с этим. Ура!