string test="add number here {0}";
int number=7;
为什么这不起作用
String.Format(test,number);
string res=test;
但是这项工作
String.Format("add number here {0}",number);
答案 0 :(得分:3)
因为你测试错了。在这2行:
String.Format(test,number);
string res=test;
String.Format
返回一个字符串。正如在documentation中可以看到的那样,这个新字符串是您想要的编号字符串。如果您将格式字符串test
分配给res
并检查string res
现在是否具有所需的输出。你(当然)不会找到它而只是
“在此处添加号码{0}”;
您需要使用方法String.Format
的返回值。在那里你会找到所需的输出:
string res = String.Format(test,number);
Console.WriteLine(res);
答案 1 :(得分:1)
让我为String.Format
添加几条关于你的注释。
从您添加问题的第一个代码开始,我希望您误解String.Format
的用法,正如您所料,它不会将输入字符串中的占位符替换为对象。实际上它用参数/对象替换占位符并返回另一个字符串。因此,您必须从.Format()
方法查看实际格式化字符串的返回值。
这就是为什么这不起作用
String.Format(test,number);
string res=test;
虽然这样可以正常工作:
string res = String.Format(test,number);
答案 2 :(得分:0)
test = String.Format(test,number);