ฉันจะแปลงสตริงเป็นจำนวนเต็มใน 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;
}
int a = int.Parse(myString);
หรือดีกว่านั้นให้พิจารณา int.TryParse(string)
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);
มีการเปรียบเทียบ 4 เทคนิคที่นี่
วิธีที่เร็วที่สุดคือ:
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 #
int i;
string result = Something;
i = Convert.ToInt32(result);
คุณสามารถใช้อย่างใดอย่างหนึ่ง
int i = Convert.ToInt32(myString);
หรือ
int i =int.Parse(myString);
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));
}
}