如何在C#中将字符串转换为整数

97

如何在C#中将字符串转换为整数?


1
可能是https://dev59.com/MHNA5IYBdhLWcg3wS70m的重复问题。 - John Rasch
12个回答

149

如果你确定它会正确解析,请使用

int.Parse(string)

如果您不是,请使用

int i;
bool success = int.TryParse(string, out i);

注意! 在下面的情况中,TryParsei 的值会是0,而不是10。

int i = 10;
bool failure = int.TryParse("asdf", out i);

这是因为TryParse使用的是一个out参数,而不是一个ref参数。


2
@sslaitha,谢谢。如果它已经充分回答了你的问题,请记得将其标记为答案。 - Brandon
3
请注意,如果你有 int i = 10; 并且使用 int.TryParse("asdf", out i); 那么 i 将包含 0 而不是 10!这是因为 TryParse 使用的是 out 变量而不是 ref。 - CaffGeek
2
“caution”适用于第三个示例,而不是第二个示例。这让我感到困惑了一会儿,因为我期望“this”指的是上面的示例,而不是下面的示例。 - peter_mcc

27
int myInt = System.Convert.ToInt32(myString);
正如其他人所提到的,您还可以使用 int.Parse()int.TryParse()
如果您确信该字符串始终为 int
int myInt = int.Parse(myString);

如果您想检查string是否真的是一个int,请先进行如下操作:

int myInt;
bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second value
if (isValid)
{
    int plusOne = myInt + 1;
}

13
int a = int.Parse(myString);

或者更好的是,看看int.TryParse(string)


6
string varString = "15";
int i = int.Parse(varString);

或者
int varI;
string varString = "15";
int.TryParse(varString, out varI);

int.TryParse 更加安全,因为如果你将其他内容放入 varString 中(例如"fsfdsfs"),则会引发异常。通过使用 int.TryParse,当字符串无法转换为整数时,它将返回 0


6

做类似以下这样的操作:

var result = Int32.Parse(str);

我遇到了一个错误,值对于 Int32 来说要么太大要么太小。 - undefined

5

如果您确定字符串中包含“真实”的数字,或者您可以处理可能出现的任何异常情况,请使用此方法。

string s="4";
int a=int.Parse(s);

如果需要更多关于该过程的控制,请使用

string s="maybe 4";
int a;
if (int.TryParse(s, out a)) {
    // it's int;
}
else {
    // it's no int, and there's no exception;
}

4

这里列举了4种技术进行基准测试。

最快的方法如下:

y = 0;
for (int i = 0; i < s.Length; i++)
       y = y * 10 + (s[i] - '0');

"s"是您要转换为整数的字符串。此代码假定在转换期间不会出现任何异常。因此,如果您知道您的字符串数据始终是某种整数值,则上述代码是纯速度最快的方法。

最后,“y”将具有您的整数值。


3
int i;
string whatever;

//Best since no exception raised
int.TryParse(whatever, out i);

//Better use try catch on this one
i = Convert.ToInt32(whatever);

2
bool result = Int32.TryParse(someString, out someNumeric)

该方法尝试将someString转换为someNumeric,并根据转换是否成功返回一个result:如果转换成功,则返回true,否则返回false。请注意,如果转换失败,此方法不会像Int32.Parse方法那样抛出异常,而是返回someNumeric的零值。

了解更多信息,请阅读以下内容:

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
如何在C#中将字符串转换为整数


0
int i;

string result = Something;

i = Convert.ToInt32(result);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接