如何在C#中以错误的格式错误避免输入字符串/ StringBuilder

Mar*_*rgo 4 c# string

我正在使用字符串构建器将文本追加到字符串.

StringBuilder content = new StringBuilder(GetStartHTML("installation",string.Empty));
.......
content.AppendFormat("<td>" + idcStepEntity.Comment + "</td>");
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法控制来自客户的内容作为评论,所以我写了类似的东西:评论{commment]评论(他们经常这样做)我得到的字符串格式错误不正确.这意味着我不应该在这里使用StringBuilder?我应该使用string += otherstring或者是否有任何其他可以在这里使用的String类?

提前致谢 :)

Lak*_*key 9

在String.Format()的第一个参数中使用未转义的"{"或"}"将导致此异常.

这将导致引发异常:

Microsoft.VisualBasic.MsgBox(String.Format("{"))
Run Code Online (Sandbox Code Playgroud)

还行吧:

Microsoft.VisualBasic.MsgBox(String.Format("{0}", "{"))
Run Code Online (Sandbox Code Playgroud)

解:

要逃避"{"使用"{{"并逃避"}"使用"}}.根据您的实施情况,这可能对您有用.

Dim s As String = "{Hello}"
s = s.Replace("{", "{{")
s = s.Replace("}", "}}")
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

它可能在堆栈跟踪中出现StringBuilder错误,因为String.Format在内部实现System.Text.StringBuilder,但即使您从未在项目中使用StringBuilder,也会得到此异常.

System.FormatException: Input string was not in a correct format.
    at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
Run Code Online (Sandbox Code Playgroud)


Jle*_*HeP 5

StringBuilder.AppendFormat仅当字符串包含 { 或 } 时,才会出现此错误。所以解决方案是使用StringBuilder.Append(因为你并没有真正使用格式部分):

content.Append("<td>" + idcStepEntity.Comment + "</td>");
Run Code Online (Sandbox Code Playgroud)