特殊的字符串替换功能

本文关键字:替换 功能 字符串 | 更新日期: 2023-09-27 18:10:07

我必须用我预先定义的链接替换特定的链接。

string content = @"<html>"
                +" <a href='http://www.yourdomain.com' style='width:10px;'>Click Here</a>"
                +" <br>"
                +" <a href='http://www.yourdomain.com/products/list.aspx' style='width:10px;'>Click Here</a>"
                +" </html>";

这样替换===> "http://www.yourdomain.com""http://www.mydomain.com"

但我不希望其他链接也以"http://www.yourdomain.com"开始被替换。如果这些链接有子链接(即"/products/list.aspx")。

所以我首先使用c# string.Replace()函数。

string result = content.Replace("http://www.yourdomain.com", "http://www.mydomain.com");

我也尝试Regex.Replace()功能以及

string pattern = @"'bhttp://www.yourdomain.com'b";
string replace = "http://www.mydomain.com";
string result = Regex.Replace(content, pattern, replace);

但是我得到了相同的结果。像下面。

<html> 
<a href='http://www.mydomain.com' style='width:10px;'>Click Here</a> 
<br> 
<a href='http://www.mydomain.com/products/list.aspx' style='width:10px;'>Click Here</a> 
</html>

<html> 
<a href='http://www.mydomain.com' style='width:10px;'>Click Here</a> 
<br> 
<a href='http://www.yourdomain.com/products/list.aspx' style='width:10px;'>Click Here</a> 
</html>
<标题> 更新

根据@Robin的建议,我的问题解决了。

string content = @"<html>"
                    +" <a href='http://www.yourdomain.com' style='width:10px;'>Click Here</a>"
                    +" <br>"
                    +" <a href='http://www.yourdomain.com/products/list.aspx' style='width:10px;'>Click Here</a>"
                    +" </html>";
string pattern = string.Format("{0}(?!/)", "http://www.yourdomain.com");
string replace = "http://www.mydomain.com";
string result = Regex.Replace(content, pattern, replace);
<标题> 更新

我发现的另一种方法是

http://www.yourdomain.com([^/])

特殊的字符串替换功能

在replace调用的字符串参数末尾添加' 's。

result = content.Replace("'http://www.yourdomain.com'", "'http://www.mydomain.com'");

这样你只会替换没有子链接的url。

除了通常使用regex处理HTML的警告外,字边界'b匹配字母('w)和非字母('W),因此它匹配m'之间以及m/之间。

要明确禁止在URL末尾出现/,可以使用负向前看,参见这里:

 http://www.yourdomain.com(?!/)