.NET string.Split(string[]) 多重匹配逻辑?

.NET string.Split(string[]) multiple matching logic?

谁能解释一下 split 方法在这里使用的逻辑?

为什么只要结尾相同就可以多次匹配相似的模式,但如果开头相同就不能匹配?

它遍历要拆分的字符串的每个索引(或在第一个之后的迭代中要拆分的每个字符串),并在每个索引处尝试匹配数组的一个元素,顺序是元素出现在数组中。

在您的第一个示例字符串 "end\n\r\nbegin" 中,它尝试匹配(按此顺序)"e""en""n""end""nd""d""end\n""nd\n""d\n""\n"。它在最后一次检查中找到匹配项,拆分字符串,然后重新开始。

在可能匹配 {"NN", "NNRR"} 的字符串 "endNNRRNNbegin" 上,它匹配第一次出现的 "NN",生成 "end","RRNNbegin"。在第二遍中,它再次匹配 "NN",生成 "end","RR","begin".

如果您 运行 在您的示例的其余部分使用此算法,您将获得与您显示的输出相同的结果。

有关详细信息,请阅读 documentation 比较详细信息 部分。