winforms string.Format()给出“输入字符串格式不正确”

li9yvcax  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(261)

我做错了什么?

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对象之前,先解析字符串以取出日期。

mefy6pfw

mefy6pfw1#

string.Format()将每个“{”或“}”视为占位符的一部分(如您已使用的“{0}”)。您需要通过将其加倍来转义每个文字出现。
所以在你的情况下:

string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
bn31dyow

bn31dyow2#

1.不要在同一个输入字符串中合并活动大括号和转义大括号。
1.如果输入字符串包含任何转义大括号,请确保它没有以美元符号作为前缀。否则,使用转义的左大括号,您可能会得到上面描述的异常。如果你只有右大括号,其中一个可能会被吞噬。
P.S.这个建议完全基于StringBuilder的AppendFormat()方法的使用。

相关问题