如何检查我的字符串是否只是数字

时间:2010-12-24 07:43:01

标签: c#

如何检查我的字符串是否只包含数字?

我不记得了。有什么像isnumeric?

8 个答案:

答案 0 :(得分:61)

只需检查每个角色。

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);
}

答案 1 :(得分:10)

答案 2 :(得分:7)

对于非数字字符串

int.TryParse()方法将返回false

答案 3 :(得分:5)

你的问题不明确。字符串中是否允许.?允许¼吗?

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);

答案 4 :(得分:3)

如果你想使用Regex,你必须使用这样的东西:

string regExPattern = @"^[0-9]+$";
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(regExPattern);
return pattern.IsMatch(yourString);

答案 5 :(得分:2)

public bool IsNumeric(string str)
{
    return str.All(c => "0123456789".Contains(c);
}

答案 6 :(得分:0)

你鳕鱼喜欢那样:

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;
}

答案 7 :(得分:-2)

我有一个解决方案......即使我是一个小小的"晚了。 它是这样的:

try
{
 double test = Convert.ToDouble(string);
}
catch(Exception e)
{
MessageBox.show("String contains non numeric characters!");
}

我知道只有在需要时才会使用try-catch,因为效率稍微低一点,但如果效率不是问题,你可以选择这个。 干杯!