Як перетворити рядок на ціле у C #


Відповіді:


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", out i); що я буду містити 0 не 10 !!! Це тому, що TryParse використовує змінну out, а не посилання.
CaffGeek

2
"Обережність" стосується третього прикладу, а не другого. Я трохи здивував, оскільки я очікував, що "це" буде посилатися на приклад вище, а не нижче.
peter_mcc

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


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)

Цей метод спробує перетворити 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 #



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));
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.