0

我有一个称为数字的整数数组

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]);

但我认为我做错了什么

4

4 回答 4

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")));

延伸阅读

于 2013-04-05T22:35:55.577 回答
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]));
}
于 2013-04-05T22:49:36.877 回答
1

从 java 代码中复制并将其直接粘贴到 c# 代码中,然后更改(在您的toDecimalString()方法中):

  • f.format 到 f. 格式_
  • 数字长度到数字。长度_
  • b.toString() 到 b. 字符串()

然后将此类粘贴到您的代码中:

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;
}

请注意,该类仅实现了您的问题所述的最低要求,如果您进一步扩展要求,则需要添加代码。

于 2013-04-06T00:00:31.077 回答
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();
}

谢谢大家的回答,我终于找到了上面的解决方案

于 2013-04-05T23:10:40.653 回答