Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查我的字符串是否仅为数字_C# - Fatal编程技术网

C# 如何检查我的字符串是否仅为数字

C# 如何检查我的字符串是否仅为数字,c#,C#,如何检查字符串是否只包含数字 我不记得了。类似于isnumeric的东西?您可以使用或 另请参见int。对于非数字字符串,TryParse()方法将返回false只需检查每个字符 bool IsAllDigits(string s) { foreach (char c in s) { if (!char.IsDigit(c)) return false; } return true; } 或者使用LINQ bool IsA

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

我不记得了。类似于isnumeric的东西?

您可以使用或


另请参见

int。对于非数字字符串,TryParse()方法将返回false

只需检查每个字符

bool IsAllDigits(string s)
{
    foreach (char c in s)
    {
        if (!char.IsDigit(c))
            return false;
    }
    return true;
}
或者使用LINQ

bool IsAllDigits(string s) => s.All(char.IsDigit);
如果您想知道输入程序的值是否表示有效的整数值(在
int
范围内),可以使用
TryParse()
。请注意,这种方法与检查字符串是否只包含数字不同

bool IsAllDigits(string s) => int.TryParse(s, out int i);

你的问题不清楚。字符串中是否允许
?是否允许
¼

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

如果您想使用正则表达式,您必须使用如下内容:

string regExPattern = @"^[0-9]+$";
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(regExPattern);
return pattern.IsMatch(yourString);
你可以这样做:

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

+1尽管我不同意文章建议避免使用Microsoft.VisualBasic命名空间中提供的库函数。它不是遗留代码或类似的东西。如果它比其他解决方案更容易满足您的需要,请使用它。我不建议使用
int.TryParse
long.TryParse
,因为它们可能会溢出。@JimMischel:在.NET的当前版本中,
int.TryParse()
不会引发溢出异常。它只是返回false。@JonathanWood:你误解了我在这里使用的术语“溢出”。我的观点是,由于溢出,
int.TryParse
将为
9876543210
值返回
false
。也就是说,值“9876543210”太大,无法放入
int
@JimMischel:好的,那么您是说在这种情况下它应该返回true,因为所有字符实际上都是数字。因此,从技术上讲,这是正确的,我(被接受的)回答也涉及到这一点。但是,在实践中,我怀疑大多数想要这些信息的人实际上都计划将该值赋给一个整数
TryParse()
在这种情况下会很有帮助。如果字符串太长,它也会引发溢出异常。至少在当前版本的.NET中,
int.TryParse()
不会在字符串太长或整数太大时引发异常。可能是
public bool IsNumeric(string str)
{
    return str.All(c => "0123456789".Contains(c);
}