ฉันมีสตริงที่มีตัวเลข
string sNumbers = "1,2,3,4,5";
ฉันสามารถแยกมันแล้วแปลงเป็น List<int>
sNumbers.Split( new[] { ',' } ).ToList<int>();
ฉันจะแปลงอาร์เรย์สตริงเป็นรายการจำนวนเต็มได้อย่างไร เพื่อที่ฉันจะสามารถแปลงstring[]
เป็นIEnumerable
ฉันมีสตริงที่มีตัวเลข
string sNumbers = "1,2,3,4,5";
ฉันสามารถแยกมันแล้วแปลงเป็น List<int>
sNumbers.Split( new[] { ',' } ).ToList<int>();
ฉันจะแปลงอาร์เรย์สตริงเป็นรายการจำนวนเต็มได้อย่างไร เพื่อที่ฉันจะสามารถแปลงstring[]
เป็นIEnumerable
คำตอบ:
var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList();
คุณสามารถทำได้โดยไม่ต้องใช้ Linq:
List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );
// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();
วิธีของ Joze ต้องการ LINQ ToList()
อยู่ในSystem.Linq
namespace
คุณสามารถแปลง Array เป็น List โดยไม่ต้อง Linq โดยส่ง array ไปยัง List constructor:
List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );
ใช้ดีกว่าint.TryParse
เพื่อหลีกเลี่ยงข้อยกเว้น;
var numbers = sNumbers
.Split(',')
.Where(x => int.TryParse(x, out _))
.Select(int.Parse)
.ToList();
นอกจากนี้ยังเป็นไปได้ที่จะใช้อาร์เรย์เพื่อกำหนดค่าโดยตรง
แบบนี้
int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();
นอกจากนี้คุณสามารถใช้วิธีการขยายนี้
public static List<int> SplitToIntList(this string list, char separator = ',')
{
return list.Split(separator).Select(Int32.Parse).ToList();
}
การใช้งาน:
var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');
ใน Unity3d int.Parse
ทำงานได้ไม่ดี ดังนั้นฉันใช้เหมือนร้อง
List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );
หวังว่าความช่วยเหลือนี้สำหรับผู้ใช้ Unity3d
คุณสามารถใช้คุณสมบัติภาษา C # 6.0 ใหม่:
(s) => { return Convert.ToInt32(s); }
ด้วยกลุ่มวิธีการที่สอดคล้องกันConvert.ToInt32
new Converter<string, int>(Convert.ToInt32)
ด้วย:Convert.ToInt32
ผลลัพธ์จะเป็น:
var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));
ปัญหาของฉันคล้ายกัน แต่ด้วยความไม่สะดวกที่บางครั้งสตริงมีตัวอักษร (บางครั้งว่างเปล่า)
string sNumbers = "1,2,hh,3,4,x,5";
พยายามที่จะปฏิบัติตามวิธีการขยาย Pcode Xonos:
public static List<int> SplitToIntList(this string list, char separator = ',')
{
int result = 0;
return (from s in list.Split(',')
let isint = int.TryParse(s, out result)
let val = result
where isint
select val).ToList();
}
คุณสามารถใช้สิ่งนี้:
List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();