拆分字符串并将分量计保持在结果中

本文关键字:结果 分量 字符 字符串 串并 拆分 | 更新日期: 2023-09-27 18:17:23

阅读这个问题,似乎正则表达式是我问题的解决方案。

这是我尝试拆分的 HTML:

'n't't't
    <td class='"stats_name'">
        Damage 'n't't't
    <td class='"stats_value'">
        53 'n't't't
    <td class='"stats_modifier'">
        (<span class='"ability_per_level_stat'">+3.2 / per level</span>) 'n't't'n't't  
    </td>
    </td>
    </td>

出于我的原因,我需要将其拆分为<td字符串。这在HtmlAgilityPack和String.Split中工作得很好,但是分隔符被删除了,我需要它存在。

var statCells = rowDocument.DocumentNode.InnerHtml.Split(new string[] {"<td"}, StringSplitOptions.RemoveEmptyEntries).ToList();

这是使用正则表达式来保持分律仪的相同"函数",但是它没有按预期工作并且返回了太多字符串,我认为它分别在"<"t"和"d"上拆分。

var statCells = Regex.Split(rowDocument.DocumentNode.InnerHtml, @"(?<=[<td])").ToList();

如何使用正则表达式拆分"<td"

拆分字符串并将分量计保持在结果中

>@"(?<=[<td])"在每个< td上都会拆分,因为这就是字符类的工作方式。如果您希望<td位于下一个字符串的开头(而不是最后一个字符串的末尾(,请使用以下命令:

@"(?=<td)"

不过,这将比原始解决方案慢。如果您使用 String.Split 并且只是将每个字符串与 <td 连接起来,那么这应该以相同的方式工作,但速度更快,因为您不使用正则表达式。