【问题标题】:Search word in CSV and replace with tag在 CSV 中搜索单词并替换为标签
【发布时间】:2016-04-13 12:35:16
【问题描述】:

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

This is a very fine header

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

umbraco 中的字段将如下所示:

非常,标题

我正在尝试制作一个 razor 脚本,以便它在标题中查找在 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(',');                                        
       }
   }

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

【问题讨论】:

    标签: c# html csv razor umbraco


    【解决方案1】:

    我可能会这样做:

    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 有很多项目,那么您应该使用字典来提高性能。

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 2011-09-13
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多