Самый простой способ разобрать строку с разделителями-запятыми на какой-то объект, который я могу перебирать для доступа к отдельным значениям?
каков самый простой способ проанализировать список строк с разделителями-запятыми значений в какой-то объект, который я могу перебирать, чтобы я мог легко получить доступ к отдельным значениям?
пример: "0, 10, 20, 30, 100, 200"
Я немного новичок в C#, поэтому простите меня за такой простой вопрос. Спасибо.
6 ответов:
есть gotchas с этим - но в конечном итоге самый простой способ будет использовать
string s = [yourlongstring]; string[] values = s.Split(',');
Если количество запятых и записей не важно, и вы хотите избавиться от "пустых" значений, то вы можете использовать
string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
одна вещь, хотя-это будет держать любые пробелы до и после ваших строк. Вы можете использовать немного магии Linq, чтобы решить эту проблему:
string[] values = s.Split(',').Select(sValue => sValue.Trim()).ToArray();
Это если вы используете .Net 3.5 и у вас есть система using.Декларация Linq на сайте верхней части исходного файла.
var stringToSplit = "0, 10, 20, 30, 100, 200";
// To parse your string var elements = test.Split(new[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries);
// To Loop through foreach (string items in elements) { // enjoy }
используйте Linq, это очень быстрый и простой способ.
string mystring = "0, 10, 20, 30, 100, 200"; var query = from val in mystring.Split(',') select int.Parse(val); foreach (int num in query) { Console.WriteLine(num); }
шаблон соответствует всем нецифровым символам. Это ограничит вас неотрицательными целыми числами, но для вашего примера этого будет более чем достаточно.
string input = "0, 10, 20, 30, 100, 200"; Regex.Split(input, @"\D+");
Я думаю, что лучше использовать Microsoft.Визуальная основа.FileIO.TextFieldParser Class если вы работаете с текстовыми файлами, разделенными запятыми.
иногда столбцы будут иметь внутри себя запятые, например:
"какой-то предмет", "другой предмет", "также еще один предмет"
в этих случаях разбиение на ", " приведет к разрыву некоторых столбцов. Может быть, более простой способ, но я просто сделал свой собственный метод (в качестве бонуса, обрабатывает пробелы после запятых и возвращает IList):
private IList<string> GetColumns(string columns) { IList<string> list = new List<string>(); if (!string.IsNullOrWhiteSpace(columns)) { if (columns[0] != '\"') { // treat as just one item list.Add(columns); } else { bool gettingItemName = true; bool justChanged = false; string itemName = string.Empty; for (int index = 1; index < columns.Length; index++) { justChanged = false; if (subIndustries[index] == '\"') { gettingItemName = !gettingItemName; justChanged = true; } if ((gettingItemName == false) && (justChanged == true)) { list.Add(itemName); itemName = string.Empty; justChanged = false; } if ((gettingItemName == true) && (justChanged == false)) { itemName += columns[index]; } } } } return list; }