如何在标记结尾和文本开头之间替换空格

时间:2013-11-12 13:54:21

标签: c# regex

我使用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&]),但它不起作用。

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

2 个答案:

答案 0 :(得分:0)

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

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

祝你好运!

答案 1 :(得分: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));