在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);
我得到了错误:
输入字符串的格式不正确
如何转换?
使用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)
第二个将返回一个布尔值,您可以使用它来查看转换是否通过。
您最好的选择是使用double
或decimal
解析,因为与int
不同,这不会删除任何小数点。
bool Int32.TryParse(字符串,out-int(
布尔返回值指示转换是否成功。
试试这样的东西:
public int ForceToInt(string input)
{
int value; //Default is zero
int.TryParse(str, out value);
return value;
}
这就行了。但是,我不建议采取这种方法。最好控制你的输入,无论你在哪里得到它。