用'<b>'将字符串换成字符串,使其粗体而不改变单词的原始情况</b>

时间:2013-11-28 12:53:50

标签: c# asp.net .net

我有一个字符串,我需要用<b>围绕它来制作一个特定的单词Bold,这样当它被渲染时,文本必须是粗体。

e.g。     String word =“a1c”
    String myString =“过敏类型a1c应写成A1C。”

我可以做以下事情:

String1.Replace(word,"<b>"+word+"<b>") 

但无论原始单词的情况如何,它都会将所有A1c单词更改为“a1c”。

"The allergy type <b>a1c<b> should be written <b>A1C<b>."

如何在不更改大小写的情况下完成此操作,以便我可以输出

我知道我们可以使用循环和索引来完成它,但我想知道使用RegEx或Linq等高级术语或任何小型内置机制的最佳方法。

3 个答案:

答案 0 :(得分:8)

您可以通过一次Regex.Replace调用执行此操作,如下所示:

var result = Regex.Replace(
    "The allergy type a1c should be written A1C.", // input
    @"a1c",                                        // word to match
    @"<b>$0</b>",                                  // "wrap match in bold tags"
    RegexOptions.IgnoreCase);                      // ignore case when matching

答案 1 :(得分:4)

您可以使用正则表达式匹配单词,无论大小写如何:

string word = "a1c";
string myString = "The allergy type a1c should be written A1C.";
var regex = new Regex(word, RegexOptions.IgnoreCase);
foreach (Match m in regex.Matches(myString))
{
    myString = myString.Replace(m.ToString(), "<b>" + m.ToString() + "</b>");
}

PS。考虑一个不同的粗体路线!内联样式并不理想。

答案 2 :(得分:-1)

检查此代码,这正是我认为您正在寻找的

string strRegex = @"<b>(?<X>.*?)</b>";
RegexOptions myRegexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = "Hellow world is my <b>first</b> application in <b>computer</b> world.";
        string NewString = strTargetString;
        foreach (Match myMatch in myRegex.Matches(strTargetString))
        {
            if (myMatch.Success)
            {
                NewString = NewString.Replace(myMatch.ToString(), myMatch.ToString().ToUpper());
            }
        }

NewString输出

Hellow world是我计算机世界

世界

中的第一个应用程序