如何用C#正则表达式拆分字符串并保留标签作为独立子串?
解决方法
要让标签作为独立子串保留在拆分后的数组里,你需要在正则表达式中使用捕获组——把匹配标签的部分用圆括号包起来,这样Regex.Split就会把捕获到的标签也包含在结果数组中。
具体实现代码
string myText = "I'm sorry, you don't have enough <color=#00FF00>energy</color> to continue"; // 用捕获组匹配标签,括号会保留匹配到的标签内容 string[] parts = Regex.Split(myText, @"(<.*?>)"); // 过滤掉拆分后可能出现的空字符串 parts = parts.Where(s => !string.IsNullOrEmpty(s)).ToArray();
结果说明
执行后得到的数组就是你需要的结构:
"I'm sorry, you don't have enough ""<color=#00FF00>""energy""</color>"" to continue"
原理解释
默认Regex.Split只会返回分隔符之间的内容,而把分隔符丢弃。但如果分隔符被放在捕获组(圆括号包裹)里,捕获到的内容就会被保留在结果数组中,和普通文本交替排列。最后过滤空字符串是为了避免字符串开头/结尾是标签时产生的空元素。
内容的提问来源于stack exchange,提问作者Simon A Carreño
相关产品推荐
相关产品推荐

