如何找出一个字符串是一个非数字的整数?

时间:2015-05-18 12:20:54

标签: c# regex

我需要知道给定的String是否是一个纯整数,这意味着它不是double并且没有浮动。

我所尝试的是一个正则表达式:

@"^\d+$"

if (Regex.IsMatch(oStreamDataValues[i].ToString(), @"^\d+$") == false)

这样可以正常工作,但只有在字符串包含0.00或任何其他数字值的数字时才能正常工作。

4 个答案:

答案 0 :(得分:5)

您可以使用Text方法:

TryParse

答案 1 :(得分:4)

为什么不尝试使用int.TryParse解析它:

<script type="text/javascript" src="media/js/dklab_realplexor.js"></script>
<script type="text/javascript">
    $(function () {
        var realplexor = new Dklab_Realplexor('http://rpl.mydomain.com/', 'test_');
        realplexor.subscribe("Alpha", function(data) { alert("Alpha: " + data) });
        realplexor.execute();

    });
</script>

如果您还想解析string s = "-12"; int i; bool isInt = int.TryParse(s, out i);

0.00

答案 2 :(得分:2)

正如我所看到的,在你的情况下,一些浮点值正例

  4.00 // <- just 4
  1e3  // <- is 1000
 1e100 // <- 10...0 (100 zeros)

所以我建议将其解析为Double,然后测试小数部分是否为0:

  String s = "123.0";

  Double v;

  if (Double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out v))
    if ((v - Math.Truncate(v)) < Math.Abs(v) / 1.0e20) //TODO: Adjast tolerance here
      Console.Write("this is an integer value");

答案 3 :(得分:0)

我personnaly会使用Int32静态方法来解析String。 有TryParse和Parse(取决于你是否想要使用try / catch)。

int returnedNumber = 0;
if(!Int32.TryParse(oStreamDataValues[i].ToString(), out returnedNumber)) {
    //enter code here
}

bool isInt = true;
int returnedNumber = 0;
try {
    returnedNumber = Int32.Parse(oStreamDataValues[i].ToString());
}
catch(FormatException) {
    isInt = false;
}
if(!isInt) {
    //enter code here
}

Parse方法使用以下格式:

s参数包含以下形式的数字:

[ws] [sign] digits [ws]
方括号中的项([和])是可选的。下表描述了每个元素。

ws可选的空格。
标志可选标志。
digits一个数字序列,范围从0到9.

参考文献:

解析:https://msdn.microsoft.com/en-us/library/b3h1hf19%28v=vs.110%29.aspx
TryParse:https://msdn.microsoft.com/en-us/library/f02979c7%28v=vs.110%29.aspx