c# - 如何将跨度添加到当前没有元素的字符串中的字符?
问题描述
我有看起来像这样的字符串:
"<span>X</span>間違<span>う</span><span>ABCDE</span>"
如何将跨度添加到已经没有跨度的元素,使字符串看起来像这样:
"<span>X</span><span>間</span><span>違</span><span>う</span><span>ABCDE</span>"
这是我可以用正则表达式做的事情吗?
示例 2 来源
"<span>X</span>A<span>う</span>ABC<span>Y</span>"
示例 2 结果
"<span>X</span><span>A</span><span>う</span><span>A</span><span>B</span><span>C</span><span>Y</span>"
示例 3 来源:
"間違<span>う</span>"
示例 3 结果:
"<span>間</span><span>違</span><span>う</span>
示例 4 来源:
"<span>う</span>間違"
示例 4 结果:
"<span>う</span><span>間</span><span>違</span>"
请注意,只有没有跨度的字符我需要为每个字符添加跨度。我希望这是有道理的。所以在第一种情况下,“ABCDE”需要保持为“ABCDE”。
解决方案
(根据新示例更新)
正则表达式对于 html 将失败。请参阅RegEx 匹配开放标签,XHTML 自包含标签除外
我被警告过,我想对 html 使用正则表达式
像这样的东西可以完成这项工作。
Regex.Replace(input, "(^|</span>)(.*?)(<span>|$)", "$1<span>$2</span>$3");
请注意,这不会拆分单词,不会包裹在 spans 中;它只会将它们包装在跨度中。由于已经包含在 span 中的单词不会被拆分,这似乎是合理的。
测试
string input = "間違<span>う</span>X<span>ABC</span>Y<span>DEF</span>GHI";
Console.WriteLine(input);
var replaced = Regex.Replace(input, "(^|</span>)(.*?)(<span>|$)", "$1<span>$2</span>$3");
Console.WriteLine(replaced);
間違<span>う</span>X<span>ABC</span>Y<span>DEF</span>GHI
<span>間違</span><span>う</span><span>X</span><span>ABC</span><span>Y</span><span>DEF</span><span>GHI</span>
推荐阅读
- apache-kafka - 启动MessageListnerContainer后如何控制kafka监听器的数量
- javascript - NodeArray.insertBefore 的行为
- sql - 然后具有多个值的Oracle Sql case语句
- python - Pyspark 逐行循环
- vuejs2 - 使用 vuejs 循环组件返回组件未找到
- html - 结合 ::slotted 和 ::part 伪元素
- c# - 如何在变量中检索 oracle 查询的值
- swift - 二元运算符“+”不能应用于“字符串”和“字符串?”类型的操作数
- java - 如何创建评估条件的注释
- java - Java:用 1m 个对象过滤 List 的最快方法