Самый простой способ разобрать строку с разделителями-запятыми на какой-то объект, который я могу пропустить, чтобы получить доступ к отдельным значениям?
Каков самый простой способ разобрать строковый список значений, разделенных запятыми, на какой-то объект, который я могу пропустить, чтобы я мог легко получить доступ к отдельным значениям?
Пример строки: "0, 10, 20, 30, 100, 200"
Я немного новичок в С#, поэтому простите меня за простой вопрос. Благодарю.
Ответы
Ответ 1
есть ошибки с этим - но в конечном итоге самым простым способом будет использование
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, и у вас есть использование объявления System.Linq в верхней части исходного файла.
Ответ 2
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
}
Ответ 3
Используйте 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);
}
Ответ 4
Шаблон соответствует всем несимметричным символам. Это ограничит вас неотрицательными целыми числами, но для вашего примера это будет более чем достаточно.
string input = "0, 10, 20, 30, 100, 200";
Regex.Split(input, @"\D+");
Ответ 5
Я думаю, что лучше использовать класс Microsoft.VisualBasic.FileIO.TextFieldParser
если вы работаете с текстовыми файлами, разделенными запятыми.
Ответ 6
Иногда столбцы будут иметь запятые внутри себя, например:
"Некоторые элементы", "Другой элемент", "Кроме того, еще один элемент"
В этих случаях расщепление на "," будет разбивать некоторые столбцы. Может быть, проще, но я только сделал свой собственный метод (в качестве бонуса, обрабатывает пробелы после запятых и возвращает 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;
}