在C#/.NET中将字符串转换为整数

本文关键字:字符串 转换 整数 NET | 更新日期: 2023-09-27 18:01:36

我需要将字符串转换为整数。我的字符串可以是任何类型(float/int/string/特殊字符(。

例如:

If my string is "2.3", I need to convert to = 2
If my string is "anyCharacter", I need to convert to = 0
If my string is "2", I need to convert to = 2

我尝试了以下方法:

string a = "1.25";int b = Convert.ToInt32(a);    

我得到了错误:

输入字符串的格式不正确

如何转换?

在C#/.NET中将字符串转换为整数

使用Double.TryParse((,从中获取值后,使用convert.ToInt((将其转换为int

double parsedNum;
if (Double.TryParse(YourString, out parsedNum) {
  newInt = Convert.ToInt32(num);
} 
else {
  newInt = 0;
}

尝试将其解析为浮点数,然后转换为整数:

double num;
if (Double.TryParse(a, out num) {
  b = (int)num;
} else {
  b = 0;
}

这应该会有所帮助:将任何字符串视为double,然后将其Math.Floor()四舍五入到最接近的整数。

double theNum = 0;
string theString = "whatever"; // "2.3"; // "2";
if(double.TryParse(theString, out theNum) == false) theNum = 0; 
//finally, cut the decimal part
int finalNum = (int)Math.Floor(theNum);

注意:由于theNum初始化,if本身可能不需要,但通过这种方式它更可读。

我认为Convert.ToInt32是错误的查找位置-我会使用Integer.Tryparse,如果Trypars的计算结果为false,则为变量赋值0。在TryParse之前,如果您在字符串中找到点,您可以简单地删除点之后的任何字符。

此外,请记住,有些语言使用","作为分隔符。

尝试:

if (int.TryParse(string, out int)) {
    variable = int.Parse(string);
}

据我所知,没有任何泛型转换,因此您必须执行switch以找出变量的类型,然后使用以下任一项(针对每种类型(:

int.Parse(string)

int.TryParse(string, out int)

第二个将返回一个布尔值,您可以使用它来查看转换是否通过。

您最好的选择是使用doubledecimal解析,因为与int不同,这不会删除任何小数点。

bool Int32.TryParse(字符串,out-int(

布尔返回值指示转换是否成功。

试试这样的东西:

public int ForceToInt(string input)
{
   int value; //Default is zero 
   int.TryParse(str, out value);
   return value;
}

这就行了。但是,我不建议采取这种方法。最好控制你的输入,无论你在哪里得到它。