拆分字符串并在c#中保留分隔符字符串

时间:2014-12-03 06:24:09

标签: c# regex string

如何基于字符串拆分字符串并使结果数组也包含分隔符?

示例:

如果我的字符串= "Hello how are you.Are you fine?.How old are you?"

我想基于字符串“you”拆分,然后我想要的结果是一个包含项{ "Hello how are", "you", ".Are", "you", "fine?.How old are", "you", "?" }的数组。

我怎样才能得到这样的结果?我尝试了String.Split

string[] substrings = Regex.Split(source, stringSeparators);

但是两者都给出了结果数组而没有出现you

另外,我想只对整个单词you进行拆分。如果you是其他一些词语的一部分,我不想分开。例如,在Hello you are so young的情况下,我希望结果为{ "Hello", "you", "so young" }。我不想将单词young拆分为{ "you", "ng" }

4 个答案:

答案 0 :(得分:4)

您可以将分隔符放入匹配组,然后它将成为结果数组的一部分:

string[] substrings = System.Text.RegularExpressions.Regex.Split(source, "(you)");

输出将是:

"Hello how are ", 
"you" ,
".Are ",
"you",
" fine?.How old are ",
"you",
"?"

有关您的其他问题的更新:请在关键字周围使用字词边界:

Split(source, "\\b(you)\\b");

答案 1 :(得分:1)

\b(you)\b

按此分割即可获得结果。

答案 2 :(得分:0)

正则表达式替换:

带有(you)

|\1|

现在你将有一个这样的字符串:

Hello how are |you|.Are |you| fine?.How old are |you|?

现在您可以简单地拆分|

希望有所帮助

答案 3 :(得分:0)

string [] substrings = System.Text.RegularExpressions.Regex.Split(source," \ s * you \ s *");

这应该有效。以下是输出。

"您好"

" .Are"

"好吗?。现在多岁了"

""