C#:是否有类似于C#的php ctype#U数字函数的内容?

C#:是否有类似于C#的php ctype#U数字函数的内容?,c#,.net,string,validation,digits,C#,.net,String,Validation,Digits,我有一个字符串,我想检查它是否只包含数字。我真的不想(或需要)解析它或任何东西,我只想知道它只包含数字(也没有浮点分隔符,只有数字) PHP有一个很好的函数名为。在.Net框架的任何地方,C#都有类似的功能吗?或者我需要使用正则表达式或类似的东西吗 为此创建正则表达式当然非常简单,但如果有更好的方法,我不想使用它:p您可以使用。如果提供的字符串表示有效数字,则返回true,否则返回false。不要忘记使用NumerStyles。None禁止空格和加号/减号 更新:正如empi所说,这对非常大的字

我有一个字符串,我想检查它是否只包含数字。我真的不想(或需要)解析它或任何东西,我只想知道它只包含数字(也没有浮点分隔符,只有数字)

PHP有一个很好的函数名为。在.Net框架的任何地方,C#都有类似的功能吗?或者我需要使用正则表达式或类似的东西吗

为此创建正则表达式当然非常简单,但如果有更好的方法,我不想使用它:p您可以使用。如果提供的字符串表示有效数字,则返回true,否则返回false。不要忘记使用
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。。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个字符,如果再增加一个数字,则会失败)

    尽管如此,如果你不打算使用这个数字,这可能是一个过度的杀伤力,所以我会选择正则表达式,或者更好的方法是循环检查每个字符是否是一个数字

    如果你想变得有点疯狂,你可以把它分成几个更小的字符串,然后使用任务库以并行方式检查它: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个字符,如果再增加一个数字,则会失败)

    尽管如此,如果你不打算使用这个号码,那可能是一种过度使用,