我有一个Wiki程序,它在本地工作,组织文章并添加链接到函数的HTML链接(以加载后续文章)。
一些让你头疼的代码:
for each (var keyword:String in thisArticleArray) {
var pattern:RegExp = new RegExp(keyword,'/gi');
contents = contents.replace(pattern,"<a href="event:" + "$&" + ""><b>" + keyword + "</b></a>");
}
无论如何,这个想法是这些链接链接到新的文章。这还不错。但现在,我有一些文章的名字包含了其他文章的名字。例如"苹果"one_answers"苹果派"。我该如何区分这些?现在,当它击中那个区域时,它就会失灵。。。
有什么想法吗?
好吧,我只需按字符串长度对thisArticleArray
进行反向排序。这样,代码将始终尝试先匹配较长的匹配项,然后再匹配较短的匹配项。
您是否尝试过编写正则表达式?如果您将/Apple/gi设置为RegEx
new RegExp(keyword,'gi')
那么它将在任何地方与苹果匹敌。但如果你的RegEx看起来像这样,例如:/^Apple$/gim
new RegExp("^"+keyword+"$","gim")
在这个例子中,模式将匹配单词Apple或单独排成一行的Apple,因此它将不匹配Apple Pie。
换句话说,如果您要使正则表达式更加具体,您将能够减少误报匹配:)