Як перетворити рядок на ціле у C #?
Як перетворити рядок на ціле у C #?
Відповіді:
Якщо ви впевнені, що він проаналізує правильно, використовуйте
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 .
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;
}
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
.
Якщо ви впевнені, що у вашому рядку є "справжній" номер, або вам подобається будь-який виняток, який може виникнути, скористайтеся цим.
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;
}
Зробіть щось на зразок:
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);
Найшвидшим способом виявився наступний:
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
"s" - це ваш рядок, який ви хочете перетворити на int. Цей код передбачає, що ви не будете мати жодних винятків під час перетворення. Отже, якщо ви знаєте, що ваші рядкові дані завжди будуть якимось значенням int, наведений вище код є найкращим способом досягнення чистої швидкості.
В кінці "y" матиме ваше значення int.
bool result = Int32.TryParse(someString, out someNumeric)
Цей метод спробує перетворити someString
на someNumeric
, а повернути a 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 #