将一个长字符串拆分成短字符串数组

3

如何将大约300个单词的字符串分割成由n/30个包含30个单词的字符串组成的数组?


@Mark:我已经编辑了问题以便更清晰,你可以根据需要进行修改。向量:只是一个易于使用的数据结构,就像数组一样。 - Meir
2个回答

7

您可以使用Regex.Matches

string[] bits = Regex.Matches(input, @"\w+(?:\W+\w+){0,29}")
                     .Cast<Match>()
                     .Select(match => match.Value)
                     .ToArray();

点击此链接查看在线演示:ideone


1
它忽略了每个项目的第一个字符。 - Nick Binnet
@Nick Binnet:我已经更新了答案,并提供了一个示例链接,展示了代码的正确运行。您能否解释一下您所说的“它忽略了每个项目的第一个字符”是什么意思?我不明白您的意思,输出似乎没有任何“被忽略的字符”。 - Mark Byers
很抱歉误解了你的回答。我的错,我是在尝试用于不同的目的。 - Nick Binnet

2

如果您的字符串中包含非常大或非常小的字符集,使用正则表达式进行拆分是有意义的。或者,您可以使用String类的Substring方法来获得所需的结果:

        string input = "abcdefghijklmnopqrstuvwxyz";
        const int INTERVAL = 5;

        List<string> lst = new List<string>();
        int i = 0;
        while (i < input.Length)
        {
            string sub = input.Substring(i, i + INTERVAL < input.Length ? INTERVAL : input.Length - i);
            Console.WriteLine(sub);
            lst.Add(sub);
            i += INTERVAL;
        }

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