使用字符串分隔对字符串进行标记

Tok*_*man 1 c c# c++ winapi

如果我有一个字符串

"这是一个将被这个和那个分开的字符串"

我想把拆分结果作为

  1. "是一个将被拆分的字符串"
  2. "然后"
  3. "这是一个字符串"
  4. "将由此分裂,"

1和2分为"this"3和4分为"that"

我的解决方案是使用字符串映射到字符串并将结果存储在相同类型字符串到字符串的另一个映射中.然而,对于更复杂和更长的文本,存储在地图中的结果变得重复,即如在上面的1和3中那样重复子串"是字符串"并且该冗余产生不正确的统计结果.

您能否提供一个更好的解决方案来使用不同长字符串的分隔符来标记长字符串?

Jal*_*aid 9

string myString = "This is a string that will be splitted by this and that";
string foo = myString.ToUpper();

string[] byThis = foo.Split(new string[] { "THIS" }, StringSplitOptions.RemoveEmptyEntries);
string[] byThat = foo.Split(new string[] { "THAT" }, StringSplitOptions.RemoveEmptyEntries);

string[] all = foo.Split(new string[] { "THAT", "THIS" }, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

或者你可以使用正则表达式

string[] all = System.Text.RegularExpressions.Regex.Split(myString, "your pattern", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)