Как я могу разделить строку, как показано в примере ниже

#c# #string #list

#c# #строка #Список

Вопрос:

У меня есть строка, подобная приведенной ниже

 string str = "ABE,1A2B3CD,1B2A3C,1A2BC3E";
 

Как я могу разделить эту строку и установить ее в список, как показано ниже?

 List<string> lst = new List<string>();
lst[0] = "A";  
lst[1] = "B";  
lst[2] = "E";  
lst[3] = "1A2B3CD";  
lst[4] = "1B2A3C";  
lst[5] = "1A2BC3E";  
 

Комментарии:

1. Возможно, вы захотите объяснить, как вы получаете этот список. Это не просто разделение на запятую. Как вы приходите к A / B / E?

2. Каким правилам вы здесь следуете? Всегда ли бывает так, что список разбивается на запятые, но затем каждый символ в первой строке обрабатывается как отдельная запись? Один пример не дает нам много для продолжения.

3. -1 за то, что позволил нам угадать, чего вы хотите. Вы должны объяснить такие вещи в вопросе.

Ответ №1:

Попробуйте с этим:

 string[] s = str.Split(',');
if (s.Length > 0)
{
    foreach (char c in s[0])
        lst.Add(c.ToString());
    for (int i = 1; i < s.Length; i  )
        lst.Add(s[i]);
}
 

Я предположил, что вам нужно разделить каждую строку, разделенную запятой, и, только для первого, каждый отдельный символ…

Комментарии:

1. наилучшие возможные усилия в ожидании разъяснения вопроса 🙂

2. Я сделал свою собственную попытку интерпретировать это сейчас;)

3. @sehe: … и вы получили 1 от меня за ваши усилия. Отличный код !! 🙂

Ответ №2:

Предполагая, что вам нужна строка, которая не начинается с цифры, разделенной на отдельные символы:

 using System.Text.RegularExpressions;

var split = str.Split(',').SelectMany(s => Regex.IsMatch(s, @"^d")
          ? new [] {s} 
          : s.ToCharArray().Select(c => c.ToString()))
     .ToList();
 

разделить:

 { "A", "B", "E", "1A2B3CD", "1B2A3C", "1A2BC3E" }