在 CSV 中搜索单词并替换为标签

Search word in CSV and replace with tag

在 Umbraco 中,我创建了一个字段 (supportListItemWordMarking) 来输入用户希望在 header、f.x 中突出显示的单词的 csv。

This is a very fine header

并且用户希望 veryheader 以红色突出显示

umbraco 中的字段将如下所示:

非常,header

我正在尝试制作一个剃须刀脚本,以便它会在 header 中查找在 supportListItemWordMarking 字段中输入的单词,然后输出如下内容:

<h1>This is a <span class="red">very</span> fine <span class="red">header</span></h1>

我想到了这个:

  @{
     if(subItem.HasValue("supportListItemWordMarking")) {
        string[] wordMarking = subItem.GetValue("supportListItemWordMarking").ToString().Split(',');                                        
       }
   }

但我不确定这是否是正确的方法,所以我被卡住了。

我可能会这样做:

var txt = "This is a very fine header";

var wordMarking = new string[] { "very", "header" };

// search for all words using regex
var rx = new Regex(@"(\w+)", RegexOptions.Compiled);

// the text to replace all regex matches with
// any words found will be inserted into {0} using string.Format
var replacementText = "<span class=\"red\">{0}</span>";

var newTxt = rx.Replace(txt, (match) =>
{
    var wordFound = match.Groups[1].Value;

    // check if word should be marked
    if (wordMarking.Contains(wordFound))
    {
        // return the new word with the replacement
        return string.Format(replacementText, wordFound);
    }

    return wordFound;
});

如果列表 wordMarking 有很多项,那么您应该使用字典来提高性能。