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. フォーマット_
  • digits.length から数字へ。
  • b.toString() から b. To String()

次に、このクラスをコードに貼り付けます。

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 に答える