[英]Split string by array of strings, and include words used to split in final array in C#
我正在尝试将字符串拆分为字符串数组中单词周围的数组。 现在,我正在使用myString.Split(arrayOfWordsToSplitOn, StringSplitOptions.RemoveEmptyEntries)
,它会分割字符串,但不包括要分割的实际单词。
例如,如果我有字符串"My cat and my dog are very lazy"
和字符串数组{"cat", "dog"}
,现在它返回{"My", "and my", "are very lazy"}
。
但是,我希望最终输出为{"My", "cat", "and my", "dog", "are very lazy"}
。 有什么办法吗?
您可以从搜索词列表中创建基于替代的正则表达式,然后用捕获组(...)
包装该部分。 然后,添加\\s*
以Regex.Split
组周围的空白并使用Regex.Split
:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var arrayOfWordsToSplitOn = new List<string> { "cat", "dog" };
var s = "My cat and my dog are very lazy";
var pattern = string.Format(@"\s*\b({0})\b\s*", string.Join("|", arrayOfWordsToSplitOn));
var results = Regex.Split(s, pattern).Where(x => !String.IsNullOrWhiteSpace(x)).ToList();
foreach (var res in results)
Console.WriteLine(res);
}
}
参见C#演示 。
结果:
My
cat
and my
dog
are very lazy
笔记:
\\b
(单词边界)可能会导致匹配失败,并且搜索“单词”必须为Regex.Escape
d
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.