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


Answers:


134

如果您确定可以正确解析,请使用

int.Parse(string)

如果不是,请使用

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

警告!在以下情况下,i将等于0,而不是10之后的值TryParse

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

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


2
@sslaitha,谢谢。如果它足以回答您的问题,请记住将其标记为答案。
布兰登

3
请注意,如果您有int i = 10,并使用int.TryParse(“ asdf”,i); 我将包含0而不是10!这是因为TryParse使用out变量,而不是ref。
CaffGeek 2010年

2
“警告”适用于第三个示例-不适用于第二个示例。让我有些困惑,因为我希望“ this”是指上面的示例,而不是下面的示例。
peter_mcc 2014年

22
int myInt = System.Convert.ToInt32(myString);

正如其他几个人提到的,您也可以使用int.Parse()int.TryParse()

如果您确定string始终为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;
}

9
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何时无法将字符串转换为int,它将返回0


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


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

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

最快的方法如下:

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

“ s”是您想要转换为int的字符串。此代码假定您在转换期间不会有任何异常。因此,如果您知道字符串数据将始终是某种int值,则以上代码是提高速度的最佳方法。

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


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

此方法将尝试转换someStringsomeNumeric,并返回aresult取决于转换是否成功,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);

0

您可以使用

    int i = Convert.ToInt32(myString);

要么

    int i =int.Parse(myString);

0
class MyMath
{
    public dynamic Sum(dynamic x, dynamic y)
    {
        return (x+y);
    }
}

class Demo
{
    static void Main(string[] args)
    {
        MyMath d = new MyMath();
        Console.WriteLine(d.Sum(23.2, 32.2));
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.