当不在SRC或HREF中时,正则表达式替换双空格

时间:2012-12-19 15:13:54

标签: regex vb.net

目前我正在开展一个剥离所有不必要的HTML的项目。我已经有了它的工作,但我使用以下代码来替换双空格:

Private Function stripDubbleSpace(ByVal fileContent As String) As String
    While fileContent.IndexOf("  ") <> -1
        fileContent = fileContent.Replace("  ", " ")
    End While
    Return fileContent.Replace("  ", " ")
End Function

上面的代码有效,但在HREF或SRC中,当您将双空格替换1个空格时,url将转到404。不要问为什么我的网址中有空格,我知道这不是最好的方法。

例:
/images/my img.jpg(2个空格)将被/images/my img.jpg(1个空格)替换,不应替换。

如果不在HREF或SRC中,我怎么才能替换双空格?

3 个答案:

答案 0 :(得分:1)

使用单个空格替换双倍空间的代码并不真正使用正则表达式。如果你想要regexp,那么它应该如下所示:

myurl = myurl.replace(/\s{2,}/g, ' ');

下一步是展开regexp以上以检测HREFSRC标记并跳过它们。

Reference 1

Reference 2

答案 1 :(得分:0)

使用Html Agility Pack。正则表达式不够聪明,不能用它的嵌套结构来解析Html,或者至少,你最终会使用无望的复杂Regex表达式。

答案 2 :(得分:0)

最后我不想使用解析器,因为只需要这个函数就会花费更多的时间。我的最终解决方案是找到所有属性KEY =“VALUE”。用标记替换这些属性中的空格。然后用1个空格替换所有双空格,最后用空格替换标记。现在属性仍然保留空格,我不需要库。