ฉันมีสตริง:
var names = "Brian,Joe,Chris";
มีวิธีแปลงค่านี้เป็นList<string>
ตัวคั่นด้วย,
บรรทัดเดียวหรือไม่?
ฉันมีสตริง:
var names = "Brian,Joe,Chris";
มีวิธีแปลงค่านี้เป็นList<string>
ตัวคั่นด้วย,
บรรทัดเดียวหรือไม่?
for
ลูปซึ่งน่าเบื่อกว่ามีโอกาสผิดพลาดและไม่ชัดเจน
คำตอบ:
List<string> result = names.Split(new char[] { ',' }).ToList();
หรือสะอาดกว่าด้วยคำแนะนำของ Dan:
List<string> result = names.Split(',').ToList();
new char[] { }
ส่วนทั้งหมดไว้ อย่างน้อยก็อ่านได้มากขึ้นสำหรับฉัน
System.LINQ
เนมสเปซเข้ามาหรือไม่?
List<T>
มีโครงสร้างที่ยอมรับต์IEnumerable<T>
:
List<string> listOfNames = new List<string>(names.Split(','));
ฉันชอบสิ่งนี้เพราะมันป้องกันไม่ให้รายการเดียวที่มีรายการว่างถ้าสตริงต้นทางของคุณว่างเปล่า:
IEnumerable<string> namesList =
!string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
แยกสตริงที่คั่นด้วยอักขระและส่งคืนองค์ประกอบที่ไม่ว่างเปล่าทั้งหมด
var names = ",Brian,Joe,Chris,,,";
var charSeparator = ",";
var result = names.Split(charSeparator, StringSplitOptions.RemoveEmptyEntries);
https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.8
string given="Welcome To Programming";
List<string> listItem= given.Split(' ').ToList();//Split according to space in the string and added into the list
เอาต์พุต:
Welcome
To
Programming
หากคุณมีรายการและต้องการที่จะเพิ่มค่าจากสตริงคั่นคุณสามารถใช้หรือAddRange
InsertRange
ตัวอย่างเช่น:
existingList.AddRange(names.Split(','));
ใช้แพ็กเกจ Stringify.Library nuget
//Default delimiter is ,
var split = new StringConverter().ConvertTo<List<string>>(names);
//You can also have your custom delimiter for e.g. ;
var split = new StringConverter().ConvertTo<List<string>>(names, new ConverterOptions { Delimiter = ';' });