我有一个字符串,我需要用<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等高级术语或任何小型内置机制的最佳方法。
答案 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是我计算机世界
世界中的第一个应用程序