我做错了什么?
string tmp = @"
if (UseImageFiles) {
vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year)
calHeight += 22;
}";
string x = "xter";
tmp = string.Format(tmp, x);
我明白
输入字符串的格式不正确
当尝试更改{0}
时。我用C#和WinForms做这个。
未处理格式异常
输入字符串的格式不正确
我得到的故障排除提示:
确保方法参数的格式正确。将字符串转换为datetime时,在将每个变量放入DateTime对象之前,先解析字符串以取出日期。
2条答案
按热度按时间mefy6pfw1#
string.Format()
将每个“{”或“}”视为占位符的一部分(如您已使用的“{0}”)。您需要通过将其加倍来转义每个文字出现。所以在你的情况下:
bn31dyow2#
1.不要在同一个输入字符串中合并活动大括号和转义大括号。
1.如果输入字符串包含任何转义大括号,请确保它没有以美元符号作为前缀。否则,使用转义的左大括号,您可能会得到上面描述的异常。如果你只有右大括号,其中一个可能会被吞噬。
P.S.这个建议完全基于StringBuilder的AppendFormat()方法的使用。