0

我想用 <> 字符分割我的文本。
示例假设我有一个字符串

 string Name="this <link> is my <name>";

现在我想拆分它,以便我有一个字符串数组

ar[0]="this "
ar[1]="<link>"
ar[2]=" is my "
ar[3]="<name>"

我正在尝试使用拆分功能,例如

string[] ar=Name.Split('<');

我也试过

 string[] nameArray = Regex.Split(name, "<[^<]+>");

但这并没有给我

 "<link>"
 and "<name>"

但这不是一个好方法。
我可以在这里使用正则表达式吗?

4

1 回答 1

8

Regex r = new Regex(@"(?<=.)(?=<)|(?<=>)(?=.)");
foreach (var s in r.Split("this_<link>_is_my_<name>"))
{
    Console.WriteLine(s);
}

this_
<link>
_is_my_
<name>

(下划线用于清楚)

正则表达式在零宽度点上拆分(因此它不会删除任何内容),即:

  • 在某事之前和之后<
  • 在某事之前>和之后

如果您的字符串以括号中的内容开头或结尾,则“某事”检查是必要的,以避免在开头或结尾出现空字符串。

注意类似"<link<link>>"会给你的东西,{ "<link", "<link>", ">" }所以尽量让你的尖括号平衡。

如果您想要空字符串(如果字符串以开头<或结尾),>您可以使用(?=<)|(?<=>). 如果遇到中间><要空字符串,我认为您需要先拆分(?=<),然后拆分所有结果(?<=>)-我认为您不能一口气完成。

于 2012-11-20T10:39:35.650 回答