我有很多HTML页面,我想将部分段落的单词转换为链接。
例如:
string paragraph="Bookselling is the commercial trading of books, the retail and distribution end of the publishing process. The modern system of bookselling dates from soon after the introduction of printing. Compare retail prices & arrival times on your books - all in one place. Select which books you want - used, digital, or rental"
string []Linkwords=new string[]{"books","Bookselling"};
我不知道我必须做什么,但这是我的代码,将其替换为链接......
1- Sorting Linkwords ...
2- paragraph=paragraph.Replace(Linkwords[i],"<a href=\"#\">"+Linkwords[i]+"</a>");
它没有给出正确答案
<a htef="#"><a htef="#">books</a>elling</a> is the commercial trading of <a htef="#">Books</a>
是否有任何准备好的功能或类似的东西。谢谢
答案 0 :(得分:0)
我更喜欢使用正则表达式来进行高级搜索方法, 例如,你可以这样替换你的代码:
using System;
using System.Collections;
using System.Text.RegularExpressions;
public class Program
{
static void Main()
{
List<string> words = new List<string> { @"\bbooks\b", @"\bbooksellings\b", ... };
string pattern = string.Join("|", words.Select(w => Regex.Escape(w)));
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
}
}
我放置\b
平均字边界,以确保所选字段不是另一个字的一部分。
答案 1 :(得分:0)
这是因为替换首先匹配bookselling,然后用标签包装,然后它匹配另一个标签内的书籍和包装。如果你首先匹配书籍,那么它会起作用,但是然后书籍销售将永远不会起作用,而且如果你匹配书籍,那么它们就会起作用。如果有一个尾随空格,那么你就不会在以&#34; books&#34;结尾的句子中匹配。或其他字符尾随。
我会使用正则表达式进行搜索并替换,因为您可以检查完整的单词而不仅仅是特定字符:
var pattern = $"\\b{Linkwords.Join(@"\b|\b"}\\b"; // joins the words with \b|\b as a separator paragraph = Regex.Replace(paragraph, pattern, match => string.Concat(@"starting tag", match.Value, @"ending tag"))