如何将字符串拆分为多个值?

3

如何分割字符串?

假设我有一个字符串"dog, cat, mouse,bird"

我的实际目标是将每个动物插入到listBox中,使它们成为列表框中的项目。

但是,如果我知道如何拆分字符串,我认为我会想到如何插入这些项目。还有其他更好的方法吗?

我正在使用asp c#。


为什么有人给这个问题点了踩?我认为这是一个完全合理的问题。 - Patrik Svensson
5个回答

8
    string[] tokens = text.Split(',');

    for (int i = 0; i < tokens.Length; i++)
    {
          yourListBox.Add(new ListItem(token[i], token[i]));
    }

1
这是漂亮、简单...而且它可以工作,不过需要进行一些小的修改。 - Adyt
Adyt,ZombieSheep是对的,加上.Trim(),但我猜你已经知道了。我想尽可能清楚地阐述所问的问题,不多也不少。 - dove

4

你尝试过使用String.Split吗?如果你想要把"a, b, c"转换为{"a", "b", "c"},那么你可能需要进行一些后处理来去除空格;但是如果你想要将"a b, c"转换为{"a b", "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;
}

4

不需要使用 Linq 版本;

from s in str.Split(',')
where !String.IsNullOrEmpty(s.Trim())
select s.Trim();

我认为这个版本很棒,因为它删除了空元素。 - Kieron

3
或者简单地说:
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));
}

据我所知,在ASP.NET中,ListBox.Items.AddRange需要一个ListItem[]而不是String[]。 - Jon Skeet
如果你喜欢使用linq,你也可以使用"select new ListItem(each.Trim())"来完成这个操作。 - David Wengier

1

通过 strVar.Split,它会给你一个字符串数组

"dog, cat, mouse,bird".Split(new[] { ',' });

1
创建一个只有一个元素的字符数组可能有些多余。你可以直接将单个字符传递给Split方法。 - Joel Mueller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接