我需要将字符串转换为整数。我的字符串可以是任何类型(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);
我收到了错误:
输入字符串的格式不正确
如何转换它?
答案 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)
第二个将返回一个布尔值,您可以使用它来查看转换是通过还是失败。
您最好的选择是使用double
或decimal
解析,因为这不会删除任何小数位,与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;
}
这样就可以了。但是,我不建议采用这种方法。无论何时获得它,最好控制你的输入。