如何基于字符串拆分字符串并使结果数组也包含分隔符?
示例:
如果我的字符串= "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" }
。
答案 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"
"好吗?。现在多岁了"
""