我想通过<>分割我的文字字符。
例子假设我有一个字符串
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>"
但这不是一个好方法 我可以在这里使用正则表达式。
答案 0 :(得分: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>", ">" }
,所以尽量让你的尖括号平衡。
如果想要空字符串,如果字符串以<
开头或以>
结尾,则可以使用(?=<)|(?<=>)
。如果您在遇到><
时想要空字符串在中间,我想您需要首先拆分(?=<)
,然后拆分所有结果在(?<=>)
上 - 我不会认为你可以一次性完成。