特殊的字符串替换功能
本文关键字:替换 功能 字符串 | 更新日期: 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(?!/)