Как преобразовать строку в целое число в C # - PullRequest
84 голосов
/ 26 февраля 2010

Как мне преобразовать строку в целое число в C #?

Ответы [ 12 ]

134 голосов
/ 26 февраля 2010

Если вы уверены, что он будет обрабатываться правильно, используйте

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 .

22 голосов
/ 26 февраля 2010
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 голосов
/ 26 февраля 2010
int a = int.Parse(myString);

или еще лучше, посмотрите на int.TryParse(string)

6 голосов
/ 26 февраля 2010
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 голосов
/ 26 февраля 2010

сделать что-то вроде:

var result = Int32.Parse(str);
5 голосов
/ 26 февраля 2010

Если вы уверены, что в вашей строке есть «реальный» номер, или вас устраивает любое исключение, которое может возникнуть, используйте это.

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 голосов
/ 26 февраля 2010
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 голосов
/ 02 ноября 2014

4 метода здесь сравниваются.

Самый быстрый способ оказался следующим:

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

"s" - это ваша строка, которую вы хотите преобразовать в int. Этот код предполагает, что у вас не будет никаких исключений во время преобразования. Поэтому, если вы знаете, что ваши строковые данные всегда будут иметь какое-то значение типа int, приведенный выше код - лучший способ добиться максимальной скорости.

В конце «y» будет иметь значение int.

1 голос
/ 19 июля 2016

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

Этот метод попытается преобразовать ваш string someString в int someNumeric и вернуть вам boolean 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 голосов
/ 07 сентября 2015

Вы можете использовать либо,

    int i = Convert.ToInt32(myString);

или

    int i =int.Parse(myString);
...