C#:是否有类似于C#的php ctype#U数字函数的内容?
我有一个字符串,我想检查它是否只包含数字。我真的不想(或需要)解析它或任何东西,我只想知道它只包含数字(也没有浮点分隔符,只有数字) PHP有一个很好的函数名为。在.Net框架的任何地方,C#都有类似的功能吗?或者我需要使用正则表达式或类似的东西吗 为此创建正则表达式当然非常简单,但如果有更好的方法,我不想使用它:p您可以使用。如果提供的字符串表示有效数字,则返回true,否则返回false。不要忘记使用C#:是否有类似于C#的php ctype#U数字函数的内容?,c#,.net,string,validation,digits,C#,.net,String,Validation,Digits,我有一个字符串,我想检查它是否只包含数字。我真的不想(或需要)解析它或任何东西,我只想知道它只包含数字(也没有浮点分隔符,只有数字) PHP有一个很好的函数名为。在.Net框架的任何地方,C#都有类似的功能吗?或者我需要使用正则表达式或类似的东西吗 为此创建正则表达式当然非常简单,但如果有更好的方法,我不想使用它:p您可以使用。如果提供的字符串表示有效数字,则返回true,否则返回false。不要忘记使用NumerStyles。None禁止空格和加号/减号 更新:正如empi所说,这对非常大的字
NumerStyles。None
禁止空格和加号/减号
更新:正如empi所说,这对非常大的字符串不起作用。如果你有任意大的字符串,也许正则表达式是你唯一的选择。您可以执行类似于Regex.IsMatch的操作(字符串“^[0-9]+$”
您可以使用。如果提供的字符串表示有效数字,则返回true,否则返回false。不要忘记使用NumerStyles。None
禁止空格和加号/减号
更新:正如empi所说,这对非常大的字符串不起作用。如果你有任意大的字符串,也许正则表达式是你唯一的选择。您可以执行类似于Regex.IsMatch的操作(字符串“^[0-9]+$”
是的,您可以使用
bool Int32.TryParse(string s, out int result);
代码示例:
string myString = "1265";
int myInt;
if (Int32.TryParse(myString,myInt) // Returns true if mystring contains only digits
{
...
}
其他选项是使用正则表达式:
public static bool IsDigit(string myString)
{
string pattern = @"^\d*$";
if (Regex.IsMatch(myString, pattern))
return true;
else
return false;
}
您可以根据需要更改图案。是的,您可以使用
bool Int32.TryParse(string s, out int result);
代码示例:
string myString = "1265";
int myInt;
if (Int32.TryParse(myString,myInt) // Returns true if mystring contains only digits
{
...
}
其他选项是使用正则表达式:
public static bool IsDigit(string myString)
{
string pattern = @"^\d*$";
if (Regex.IsMatch(myString, pattern))
return true;
else
return false;
}
您可以根据需要更改模式。没有内置方法。Int32.TryParse或Int64.TryParse不适用于只包含数字的很长字符串(它们还允许使用其他字符来表示整数)。没有内置方法。Int32.TryParse或Int64.TryParse不适用于只包含数字的很长字符串(它们可能还允许使用其他字符来表示整数)。我认为,最好使用正则表达式来完成这项工作。。。“\d+”应该可以…好的,你说你不想使用它。。。但这是确保字符串只包含数字的简单方法,如果regexp通过,则可以直接使用int.Parse(…)。我认为,最好使用regex来完成这项工作。。。“\d+”应该可以…好的,你说你不想使用它。。。但这是确保字符串只包含数字的简单方法,如果regexp通过,那么您可以直接使用int.Parse(…)。的答案让我想到了这一点:D
if(subject.All(char.IsDigit))
// Do something
真不敢相信我以前没有想到过…这个@的答案让我想到了这个:D
if(subject.All(char.IsDigit))
// Do something
不敢相信我以前没有想到过…正如其他人所说,你可以使用
int.TryParse
方法,尽管除非你的数字真的非常大,否则你可以使用其他类型的TryParse
方法,其范围比int32的更大。(当然要使用numberstyle.None
选项,以避免使用符号和标点符号)
以下是细分:
int
-2147483648。。2147483647uint
0。。4294967295long
-9223372036854775808。。9223372036854775807ulong
0。。18446744073709551615float
-3.402823e38。。3.402823e38double
-1.79769313486232e308。。1.79769313486232e308十进制
-79228162514264337593543950335。。79228162514264337593543950335Double
。如果你需要使用数字,你会失去一些精度,但它可以解析很长的数字(尽管你说你不需要使用它,所以它不应该是一个问题)。在我做的一个快速测试中,它成功地解析了以下字符串:
79228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335234234234234243423
(这是308个字符,如果再增加一个数字,则会失败)
尽管如此,如果你不打算使用这个数字,这可能是一个过度的杀伤力,所以我会选择正则表达式,或者更好的方法是循环检查每个字符是否是一个数字
如果你想变得有点疯狂,你可以把它分成几个更小的字符串,然后使用任务库以并行方式检查它:p
(我知道现在有点离题了,但是如果你真的想这么做,你应该检查
并行。对于和分区游程器,请查看这个C9 10分钟剪辑:)正如其他人所说,你可以使用int.TryParse
方法,尽管除非你的数字真的非常大,您可以使用其他类型的TryParse
方法,其范围比int32的更大。(当然要使用numberstyle.None
选项,以避免使用符号和标点符号)
以下是细分:
int
-2147483648。。2147483647
uint
0。。4294967295
long
-9223372036854775808。。9223372036854775807
ulong
0。。18446744073709551615
float
-3.402823e38。。3.402823e38
double
-1.79769313486232e308。。1.79769313486232e308
十进制
-79228162514264337593543950335。。79228162514264337593543950335
可以解析最大数字的是Double
。如果你需要使用数字,你会失去一些精度,但它可以解析很长的数字(尽管你说你不需要使用它,所以它不应该是一个问题)。在我做的一个快速测试中,它成功地解析了以下字符串:
79228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335234234234234243423
(这是308个字符,如果再增加一个数字,则会失败)
尽管如此,如果你不打算使用这个号码,那可能是一种过度使用,