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

时间:2013-02-28 07:46:35

标签: c# asp.net

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

例如:

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);    

我收到了错误:

  

输入字符串的格式不正确

如何转换它?

8 个答案:

答案 0 :(得分:2)

使用 Double.TryParse(),一旦从中获取值,请使用 Convert.ToInt()将其转换为int

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

答案 1 :(得分:1)

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

int.Parse(string)

int.TryParse(string, out int)

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

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

答案 2 :(得分:1)

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

另外,请记住,某些语言使用“,”作为分隔符。

答案 3 :(得分:1)

尝试:

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

这应该会有所帮助:将任何字符串视为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);

注意:由于if初始化,可能不需要theNum,但这种方式更具可读性。

答案 6 :(得分:0)

bool Int32.TryParse(string, out int)

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

答案 7 :(得分:0)

尝试这样的事情:

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

   return value;
}

这样就可以了。但是,我不建议采用这种方法。无论何时获得它,最好控制你的输入。