4

我正在使用 c#regex.replace将空格替换为 ,例如:

text: "<a href="foo"></a> &nbsp; &nbsp; Some text..."

替换后的文本必须是:

"<a href="foo"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some text..."

我试过使用(?=(a>))(\s)*(?=[A-Za-z0-9&]),但它不起作用。

编辑:该模板可以在文本中多次出现,但始终以新段落开头。

4

2 回答 2

0

假如说:

  • 文本后没有任何其他结束标签
  • 您只有&nbsp;在结束标记之后和文本之前
  • 您的文本以字母或数字开头

有代码:

        var input = "<a href=\"foo\"></a> &nbsp; &nbsp; Some text...";
        int startIndex = input.LastIndexOf(">") + 1;

        int endIndex = startIndex;
        while (true)
        {
            if(char.IsLetterOrDigit(input[endIndex]))
                break;
            if (input[endIndex] == '&')
                endIndex += 5;
            else
                endIndex++;
        }

        var sb = new StringBuilder();
        sb.Append(input.Substring(0, startIndex));
        sb.Append(input.Substring(startIndex, endIndex - startIndex).Replace(" ", "&nbsp;"));
        sb.Append(input.Substring(endIndex));
于 2013-11-12T15:33:36.487 回答
0

编辑:考虑以下正则表达式...

(?<=&nbsp;)\s|\s(?=&nbsp;)

祝你好运!

于 2013-11-12T14:17:00.997 回答