วิธีการแปลงสตริงเป็นจำนวนเต็มใน C #


คำตอบ:


136

หากคุณแน่ใจว่าจะแยกวิเคราะห์อย่างถูกต้องให้ใช้

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 ขอบคุณ หากตอบคำถามของคุณเพียงพอโปรดอย่าลืมทำเครื่องหมายว่าเป็นคำตอบ
Brandon

3
เพียงสังเกตว่าถ้าคุณมี int i = 10; และใช้ int.TryParse ("asdf" ออก i); ที่ฉันจะมี 0 ไม่ใช่ 10 !!! เนื่องจาก TryParse ใช้ตัวแปร out ไม่ใช่ ref
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;
}



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
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));
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.