我有一个名为digits的整数数组
public String toDecimalString() {
StringBuilder b = new StringBuilder(9 * digits.length);
Formatter f = new Formatter(b);
f.format("%d", digits[0]);
for(int i = 1 ; i < digits.length; i++) {
f.format("%09d", digits[i]);
}
return b.toString();
}
我试过
String.Format("%09d", digits[i]);
但我认为我做错了什么
答案 0 :(得分:5)
我对java格式化程序并不熟悉,但我认为这就是你想要的
var str = string.Format("{0:D9}", digits[i]);
甚至更好
var str = digits[i].ToString("D9");
要加入所有这些字符串,我建议:
var str = string.Join(string.Empty, digits.Select(d => d.ToString("D9")));
进一步阅读
答案 1 :(得分:2)
我想你想要像
这样的东西StringBuilder sb = new StringBuilder();
sb.append(String.Format("DL", digits[i]));
for (int i = 1; i < digits.Length; i++) {
sb.append(String.Format("D9", digits[i]));
}
答案 2 :(得分:1)
复制从java代码并将其直接粘贴到c#代码中,然后更改(在toDecimalString()
方法中):
然后将此类粘贴到您的代码中:
public partial class Formatter: IFormatProvider, ICustomFormatter {
public String Format(String format, object arg, IFormatProvider formatProvider=null) {
if(!format.StartsWith("%")||!format.EndsWith("d"))
throw new NotImplementedException();
m_Builder.Append(String.Format("{0:D"+format.Substring(1, format.Length-2)+"}", arg));
return m_Builder.ToString();
}
object IFormatProvider.GetFormat(Type formatType) {
return typeof(ICustomFormatter)!=formatType?null:this;
}
public Formatter(StringBuilder b) {
this.m_Builder=b;
}
StringBuilder m_Builder;
}
注意该类仅实施了最低要求作为您提出的问题,如果您进一步扩展要求,则需要添加代码。
答案 3 :(得分:0)
public string toDecimalString()
{
StringBuilder b = new StringBuilder(9 * digits.Length);
var str = digits[0].ToString("D");
b.Append(str);
for (int i = 1; i < digits.Length; i++)
{
var str2 = digits[i].ToString("D9");
b.Append(str2);
}
return b.ToString();
}
感谢所有答案,我终于达成了上述解决方案