如何找出一个字符串是一个非数字整数
本文关键字:一个 数字 整数 字符串 何找出 | 更新日期: 2023-09-27 17:49:30
我需要找出一个给定的字符串是否是一个纯整数,这意味着它不是双精度和浮点数。
我尝试的是一个正则表达式:
@"^'d+$"
if (Regex.IsMatch(oStreamDataValues[i].ToString(), @"^'d+$") == false)
这很好,但只有在字符串包含像0.00这样的数字或任何其他数字值。
您可以使用TryParse
方法:
int value;
if(int.TryParse(myString, out value)) {
// it is an integer
}
为什么不尝试使用int.TryParse
解析它:
string s = "-12";
int i;
bool isInt = int.TryParse(s, out i);
如果您还想解析0.00
:
bool isInt;
decimal d;
if (decimal.TryParse(s, out d))
{
if (d % 1 == 0)
{
isInt = true;
}
else
{
isInt = false;
}
}
else
{
isInt = false;
}
正如我所看到的,一些浮点值是积极的例子在你的例子中
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");
我个人会使用Int32静态方法来解析字符串。有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
}
解析方法使用以下格式:
s形参包含如下形式的数字:
(ws)(迹象)数字(ws)
方括号([和])中的项是可选的。下表描述了每个元素。
ws可选空白。
sign可选符号。
digits从0到9的数字序列。
引用:
Parse: 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