Cách chuyển đổi chuỗi thành số nguyên trong C #


Câu trả lời:


134

Nếu bạn chắc chắn nó sẽ phân tích cú pháp chính xác, hãy sử dụng

int.Parse(string)

Nếu bạn không, hãy sử dụng

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

Thận trọng! Trong trường hợp dưới đây, isẽ bằng 0, không phải 10 sau TryParse.

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

Điều này là do TryParsesử dụng tham số out , không phải tham số ref .


2
@sslaitha, cảm ơn. Nếu nó trả lời câu hỏi của bạn đầy đủ, hãy nhớ đánh dấu nó là câu trả lời.
Brandon

3
Chỉ cần lưu ý rằng nếu bạn có int i = 10; và sử dụng int.TryParse ("asdf", out i); rằng tôi sẽ chứa 0 không phải 10 !!! Điều này là do TryParse sử dụng biến out, không phải ref.
CaffGeek

2
"Thận trọng" áp dụng cho ví dụ thứ ba - không phải ví dụ thứ hai. Tôi đã phân vân một chút vì tôi mong đợi "this" đề cập đến ví dụ ở trên, không phải ở dưới.
peter_mcc

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

Như một số người khác đã đề cập, bạn cũng có thể sử dụng int.Parse()int.TryParse().

Nếu bạn chắc chắn rằng stringsẽ luôn là int:

int myInt = int.Parse(myString);

Nếu bạn muốn kiểm tra xem stringcó thực sự là người intđầu tiên hay không:

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

hoặc tốt hơn, hãy xem xét int.TryParse(string)


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

hoặc là

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

int.TryParsean toàn hơn vì nếu bạn đặt thứ gì đó khác vào varString(ví dụ: "fsfdsfs"), bạn sẽ nhận được một ngoại lệ. Bằng cách sử dụng int.TryParsekhi chuỗi không thể chuyển đổi thành int, nó sẽ trả về 0.


5

Nếu bạn chắc chắn rằng bạn có số "thực" trong chuỗi của mình hoặc bạn cảm thấy thoải mái với bất kỳ ngoại lệ nào có thể phát sinh, hãy sử dụng điều này.

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

Để kiểm soát nhiều hơn quy trình, hãy sử dụng

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 kỹ thuật được đánh giá ở đây.

Cách nhanh nhất hóa ra là như sau:

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

"s" là chuỗi của bạn mà bạn muốn chuyển đổi thành int. Mã này giả định rằng bạn sẽ không có bất kỳ ngoại lệ nào trong quá trình chuyển đổi. Vì vậy, nếu bạn biết dữ liệu chuỗi của mình sẽ luôn là một số loại giá trị int, thì đoạn mã trên là cách tốt nhất để đạt được tốc độ thuần túy.

Cuối cùng, "y" sẽ có giá trị int của bạn.


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

Phương thức này sẽ cố gắng chuyển đổi someStringthành someNumericvà trả về giá trị resulttùy thuộc nếu chuyển đổi thành công, truenếu chuyển đổi thành công và falsenếu chuyển đổi không thành công. Lưu ý rằng phương thức này sẽ không ném ra ngoại lệ nếu chuyển đổi không thành công như cách Int32.Parsephương pháp đã làm và thay vào đó nó trả về 0 cho someNumeric.

Để biết thêm thông tin, bạn có thể đọc tại đây:

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
Cách chuyển đổi chuỗi thành số nguyên trong C #


0
int i;

string result = Something;

i = Convert.ToInt32(result);

0

Bạn có thể sử dụng,

    int i = Convert.ToInt32(myString);

hoặc là

    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));
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.