编程语言
首页 > 编程语言> > c# – 使用find / replace和regex将字符串中的URL替换为关键字

c# – 使用find / replace和regex将字符串中的URL替换为关键字

作者:互联网

我有一些关键字(单个单词或几个单词)列表,我想用一些URL替换它们.

喜欢:

>伦敦将被替换为< a
HREF = “HTTP://www.mysite/london-events/london” &GT伦敦&LT / A&GT
>伦敦的足球赛事< a
HREF = “HTTP://www.mysite/footbal-events/london” &GT
伦敦的足球赛事< / a>
>伦敦足球赛事< a
HREF = “HTTP://www.mysite/footbal-events/london” &GT
伦敦足球赛事< / a>
>足球赛事伦敦与< a
HREF = “HTTP://www.mysite/footbal-events/london” &GT
足球赛事伦敦< / a>
>伦敦的派对网站< a
HREF = “HTTP://www.mysite/party-sites/london” &GT
伦敦的派对网站< / a>
>伦敦派对网站< a
HREF = “HTTP://www.mysite/party-sites/london” &GT
伦敦派对网站< / a>

我将上面的键/值放在字典中,将关键字放在键中,将URL放在值中并替换为

内容如下:

London is a great city and have
football events in london but party
sites in london are also good. London
football events are great along with
London party sites. Enjoy London!

替换键/值的代码:

private static string ParsedContents(some arguments list here...)
{
    Dictionary<string, string> keyWords = GetKeywordsAndEntityWithURL(some arguments list here...);

    StringBuilder parsedContents = new StringBuilder(contents);

    foreach (var keyWord in keyWords)
    {
        string replacedString = Regex.Replace(parsedContents.ToString(), "\\b" + keyWord.Key + "\\b", keyWord.Value, RegexOptions.IgnoreCase);
        parsedContents.Remove(0, parsedContents.Length);
        parsedContents.Append(replacedString);
    }

    // retrun parsed contents as string.
    return parsedContents.ToString();
}

当我运行我的代码时,仅将’London’替换为’< a href =“http://www.mysite/london-events/london”> London< / a>‘而所有其他只是保持不变,但如果我从关键字中删除’伦敦’它工作正常.

你能帮我解决一下我怎么能匹配整个字符串.

要替换的内容和网址是假的:

谢谢

解决方法:

如果您先用URL替换所有较长的字符串,而不是在URL中设置“伦敦”,您可以设置另一个单词,例如“Lxondon”,该怎么办?将包含London的所有字符串替换为相应的URL后,您也可以用其URI替换London.最后,您将在所有文本中将“Lxondon”替换为“伦敦”.

这不是一个非常好的方法,但我认为它会工作.

标签:c,regex,net,replace,c-3-0
来源: https://codeday.me/bug/20190630/1339192.html