在Umbraco中,我创建了一个字段(supportListItemWordMarking)来输入用户希望在标题f.x中突出显示的单词的csv。
This is a very fine header
用户希望very
和header
以红色突出显示
umbraco中的字段将如下所示:
非常,头
我正在尝试制作一个剃刀脚本,以便它会在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(',');
}
}
但我不确定这是否是正确的方法,所以我被困住了。
答案 0 :(得分: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
包含许多项,那么您应该使用字典来提高性能。