我试图在mvc控制器中创建类似 bool 系统堆栈溢出的东西。如果我将最后一个或第一个dobbel星更改为/ *之类的其他东西,那么下面的代码是完美的,但如果我想要两者都相同怎么办? 像第一次**将< B个下一次**将是< / B个。
[HttpPost]
[ValidateInput(false)]
public ActionResult Comment(Models.CommentModel s)
{
StringBuilder sbComments = new StringBuilder();
sbComments.Append(HttpUtility.HtmlEncode(s.comment));
sbComments.Replace("**", "<b>");
sbComments.Replace("**", "</b>");
sbComments.Replace("<b>", "<b>");
sbComments.Replace("</b>", "</b>");
s.comment = sbComments.ToString();
var db = new WebApplication1.Models.ApplicationDbContext();
if (ModelState.IsValid)
{
db.Comments.Add(s);
db.SaveChanges();
return RedirectToAction("Comment");
}
return View(s);
}
正则表达式可能看起来很复杂,但并不难理解。 这个网站http://regexr.com/让我很难理解这一点。
public ActionResult Comment(Models.CommentModel s)
{
Regex fat = new Regex(@"\*\*(.*?)\*\*");
Regex italic = new Regex(@"_(.*?)_");
Regex largeText = new Regex(@"#(.*?)#");
s.kommentar = HttpUtility.HtmlEncode(s.comment);
s.comment = largeText.Replace(s.comment, "<h1>$1</h1>");
s.comment = fat.Replace(s.comment, "<b>$1</b>");
s.comment = italic.Replace(s.comment, "<i>$1</i>");
//this is the database I am adding my comments to
var db = new WebApplication1.Models.ApplicationDbContext();
if (ModelState.IsValid)
{
db.Comments.Add(s);
db.SaveChanges();
return RedirectToAction("Comment");
}
return View(s);
}
无法找到Regex()
?请务必在页面顶部添加using System.Text.RegularExpressions;
库。
答案 0 :(得分:2)
您可以使用此扩展程序:
public static string replaceHipHip(this string text, string old, string hip, string hop)
{
var result = new StringBuilder();
bool b = true;
int i = 0;
while(i>=0)
{
int j = text.IndexOf(old, i);
if (j == -1)
{
result.Append(text.Substring(i));
break;
}
else
{
result.Append(text.Substring(i, j - i));
if (b)
result.Append(hip);
else
result.Append(hop);
b ^= true;
i = j+old.Length;
}
}
return result.ToString();
}
然后你可以写:
string text = "Hello **this** is a **dummy** text";
Console.WriteLine(text.replaceHipHip("**", "<b>", "</b>"));
哪个输出:
您好此是虚拟文字
答案 1 :(得分:1)
您可以尝试使用正则表达式进行替换,如下所示:
Regex regexb = new Regex("\*\*(.*?)\*\*");
string comment = regexb.Replace(HttpUtility.HtmlEncode(s.comment), "<b>$1</b>");
希望这可以提供帮助