方法
String.Format
具有 以下重载:
public static string Format (string format, params object?[] args);
我认为这是为了将许多相同类型的
args
格式化为一个字符串,其中args
的每个都有一个格式,类似于python 3中的
str.format(*args)
。但是,当我打电话时:
var a = String.Format("{0} {1:0.00000000e+000} {2:0.00000000e+000}", new Double[] {1,2,3} );
我收到错误:
索引(从零开始)必须大于或等于零且小于参数列表的大小。当我期望
a
中的输出为
"1 2.00000000e+000 3.00000000e+000"
类似于Python 3中的a="{0:d} {1:1.8e} {2:1.8e}".format(*[1,2,3])
。打电话
var a = String.Format("{0}", new Double[] {1,2,3} );
修复了错误,但返回 a
错误的结果:
"System.Double[]"
获得我期望的 python 结果的正确 C# 方法是什么(第一列的格式不同)?-
PS:
这个相关问题给了我一个见解,但我确信我缺少一个更简单的方法:
String.Concat((new Double[] { 1,2,3 }).Select(k => string.Format("{0}", k)))
这不可能是最好的(或正确)方式。
string.Join()
可以做到这一点。
double[] d = new double[] { 1.0, 2.0, 3.0 };
string s = string.Join(" ", d);
这会将值连接成一个字符串,并且可以在 string.Join()
的第一个参数中添加任何分隔符。