#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" }