C# string.Format在HTML+;javascript
我在一个只读字符串上运行C# string.Format在HTML+;javascript,c#,.net,asp.net,string,C#,.net,Asp.net,String,我在一个只读字符串上运行string.Format,该字符串包含一点HTML+javascript,但我得到了一个System.FormatException 这是我的格式字符串: <script type="text/javascript"> function {0}_showHideFieldWindow() { if ({0}.IsCustomizationWindowVisible()) { {0}.HideCustomizat
string.Format
,该字符串包含一点HTML+javascript,但我得到了一个System.FormatException
这是我的格式字符串:
<script type="text/javascript">
function {0}_showHideFieldWindow() {
if ({0}.IsCustomizationWindowVisible()) {
{0}.HideCustomizationWindow();
} else {
{0}.ShowCustomizationWindow();
}
}
</script>
由于字符串中有大括号,因此需要通过将它们加倍(
{{{
和}}
)来对它们进行转义,以防止格式化程序认为它们是标记
字符串初始化应如下所示:
String javascript = @"<script type=""text/javascript"">
function {0}_showHideFieldWindow() {{
if ({0}.IsCustomizationWindowVisible()) {{
{0}.HideCustomizationWindow();
}} else {{
{0}.ShowCustomizationWindow();
}}
}}
</script>";
stringjavascript=@”
函数{0}\u showHideFieldWindow(){{
如果({0}.IsCustomizationWindowVisible()){{
{0}.HideCustomizationWindow();
}}否则{{
{0}.ShowCustomizationWindow();
}}
}}
";
字符串。格式
需要转义额外的括号。如果不需要所有String.Format
的功能,您最好这样做,这样做可能比转义每个括号更具可读性:
mystring.Replace("{0}","grid");
出于好奇,C中的标准转义字符不是反斜杠吗?也就是说,大括号不应该用“{\}”而不是“{}}”转义吗?我确实理解双大括号的作用,但这是最佳实践吗?因为他在字符串之前使用@符号,所以反斜杠将被字面解释为反斜杠,因此不会转义任何内容John是正确的-因为它是逐字字符串,所以您可以做一些转义,并且所有这些转义都涉及到字符的加倍(即。{变成{,“变成”等)。反斜杠用于转义非法的C#字符。大括号在C#字符串中是合法的,它是string.Format方法,该方法要求字符串采用其自身的合法格式。@Tomas:the \是字符串文字的转义字符,即用于在字符串文字中输入“特殊”字符。但是,对于格式字符串,可以将字符y加倍你想逃避。为什么?因为API就是这么说的。为什么API设计师要这么做?可能是因为他们还必须让它为使用VB.Net的人工作。哪一个更容易——向VB er解释放{,或者向C#用户解释使用{?我想后者要容易得多。
mystring.Replace("{0}","grid");