1

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

例如:

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

我得到了错误:

输入字符串的格式不正确

我该如何转换它?

4

8 回答 8

3

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

double parsedNum;
if (Double.TryParse(YourString, out parsedNum) {
  newInt = Convert.ToInt32(num);
} 
else {
  newInt = 0;
}
于 2013-02-28T07:49:44.927 回答
1

据我所知,没有任何通用转换,所以你必须做一个switch找出变量的类型,然后使用以下任一(对于每种类型):

int.Parse(string)

或者

int.TryParse(string, out int)

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

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

于 2013-02-28T07:48:35.880 回答
1

我认为 Convert.ToInt32 是寻找错误的地方 - 我会使用 Integer.Tryparse 并且如果 TryParse 评估为 false,则为变量分配 0。在 TryParse 之前,您可以简单地删除点之后的任何字符(如果您在字符串中找到它)。

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

于 2013-02-28T07:49:39.447 回答
1

尝试:

if (int.TryParse(string, out int)) {
    variable = int.Parse(string);
}
于 2013-02-28T07:50:29.257 回答
1

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

double num;
if (Double.TryParse(a, out num) {
  b = (int)num;
} else {
  b = 0;
}
于 2013-02-28T07:50:41.203 回答
1

这应该会有所帮助:将任何字符串视为 a 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,但这种方式更具可读性。

于 2013-02-28T07:52:10.127 回答
0

bool Int32.TryParse(string, out int)

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

于 2013-02-28T07:52:44.807 回答
0

尝试这样的事情:

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

   return value;
}

这会成功的。但是我不建议采用这种方法。最好在任何地方控制您的输入。

于 2013-02-28T07:54:35.607 回答