Как разделить струну?
Допустим, у меня есть строка "собака, кошка, мышка, птица".
Моя настоящая цель - вставить каждого из этих животных в список, чтобы они стали элементами в списке.
но я думаю, что у меня есть идея, как вставить эти элементы, если я знаю, как разбить строку. или кто-нибудь знает лучший способ сделать это?
я использую asp C#





string[] tokens = text.Split(',');
for (int i = 0; i < tokens.Length; i++)
{
yourListBox.Add(new ListItem(token[i], token[i]));
}
это красиво, просто ... и работает, но с небольшими изменениями.
Адыт, ZombieSheep прав, добавьте .Trim (), но предполагаю, что вы это поняли. Я хотел проиллюстрировать заданный вопрос как можно яснее и не более того.
Он дает вам строковый массив strVar.Split
"dog, cat, mouse,bird".Split(new[] { ',' });
Создание одноэлементного массива char довольно излишне. Вы можете просто передать один символ напрямую в метод Split.
Вы пробовали String.Split? Вам может потребоваться некоторая постобработка для удаления пробелов, если вы хотите, чтобы "a, b, c" заканчивались как {"a", "b", "c"}, а "ab, c" заканчивались как {"ab "," c "}.
Например:
private readonly char[] Delimiters = new char[]{','};
private static string[] SplitAndTrim(string input)
{
string[] tokens = input.Split(Delimiters,
StringSplitOptions.RemoveEmptyEntries);
// Remove leading and trailing whitespace
for (int i=0; i < tokens.Length; i++)
{
tokens[i] = tokens[i].Trim();
}
return tokens;
}
Или просто:
targetListBox.Items.AddRange(inputString.Split(','));
Или это для того, чтобы струны были обрезаны:
targetListBox.Items.AddRange((from each in inputString.Split(',')
select each.Trim()).ToArray<string>());
Ой! Как отмечается в комментариях, пропустил, что это был ASP.NET, поэтому невозможно инициализировать из массива строк - нужно сделать это следующим образом:
var items = (from each in inputString.Split(',')
select each.Trim()).ToArray<string>();
foreach (var currentItem in items)
{
targetListBox.Items.Add(new ListItem(currentItem));
}
Насколько я могу судить, ListBox.Items.AddRange нуждается в ListItem [], а не в String [] в ASP.NET.
Вы также можете сделать это с помощью «select new ListItem (each.Trim ())», чтобы сохранить вещи в linq, если вам нравятся такие вещи.
Само собой версия Linq;
from s in str.Split(',')
where !String.IsNullOrEmpty(s.Trim())
select s.Trim();
Я думаю, что эта версия просто убирает пустые элементы ... круто!
Почему люди проголосовали против этого вопроса? Я думаю, что это совершенно правильный вопрос.