[英]Splitting a string and adding to list using Regex and C#
我有一个字符串,单词的数量可能会有所不同。 喜欢:
string a_string = " one two three four five six seven etc etc etc ";
我如何将字符串分成5个单词,然后将每个字符串都添加到列表中,这样它就成为字符串列表(每个字符串包含5个单词)。 我认为列表会更好,因为字符串中的单词数可以变化,因此列表可以相应地增加或缩小。
我尝试使用Regex通过下面的代码行获取前5个字:
Regex.Match(rawMessage, @"(\\w+\\s+){5}").ToString().Trim();
但不确定如何继续进行,以及如何动态,稳健地添加到列表中。 我想正则表达式可以进一步提供帮助,或者提供一些很棒的字符串/列表功能? 你能指导我一点吗?
最终,我希望list [0]包含“一二三四五”,而list [1]包含“六七个等,等等”,依此类推。谢谢。
var listOfWords = Regex.Matches(a_string, @"(\w+\s+){1,5}")
.Cast<Match>()
.Select(i => i.Value.Trim())
.ToList();
单词拆分不需要正则表达式,字符串提供此功能:
var list = str.Split(' ').ToList();
ToList()
是LINQ扩展方法,用于将IEnumerable<T>
对象转换为列表( Split()
方法返回字符串数组)。
要将列表按5个单词分组,请使用以下代码段:
var res = list
.Select((s, i) => new { Str = s, Index = i })
.GroupBy(p => p.Index/5)
.Select(g => string.Join(" ", g.Select(v => v.Str)));
您可以使用简单
a_string.Split(' ');
然后遍历结果数组并根据需要填写列表,例如
int numOfWords = 0;
int currentPosition = 0;
foreach (var str in a_string.Split(' '))
{
if (numOfWords == 5)
{
numOfWords = 0;
currentPosition++;
}
list[currentPosition] += str;
numOfWords++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.