Làm cách nào để chuyển đổi một chuỗi thành một số nguyên trong C #?
Làm cách nào để chuyển đổi một chuỗi thành một số nguyên trong C #?
Câu trả lời:
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, i
sẽ 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 TryParse
sử dụng tham số out , không phải tham số ref .
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()
và int.TryParse()
.
Nếu bạn chắc chắn rằng string
sẽ luôn là int
:
int myInt = int.Parse(myString);
Nếu bạn muốn kiểm tra xem string
có 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;
}
string varString = "15";
int i = int.Parse(varString);
hoặc là
int varI;
string varString = "15";
int.TryParse(varString, out varI);
int.TryParse
an 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.TryParse
khi chuỗi không thể chuyển đổi thành int, nó sẽ trả về 0
.
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;
}
Làm điều gì đó như:
var result = Int32.Parse(str);
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);
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.
bool result = Int32.TryParse(someString, out someNumeric)
Phương thức này sẽ cố gắng chuyển đổi someString
thành someNumeric
và trả về giá trị result
tùy thuộc nếu chuyển đổi thành công, true
nếu chuyển đổi thành công và false
nế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.Parse
phươ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 #