2

C++ でコーディングする場合、次のようなことができます。

sprintf(result, "%5.5s", stringValue);

これにより、出力される値が常に 5 文字の長さになり、必要に応じてパディングまたは切り捨てが行われます。

String.Format を使用して、C# で同じ機能が必要であることがわかりました:-

String.Format("{0,5}", stringValue);

これは短い値には問題ありませんが、長い値は切り捨てられません。

これに対する最善の解決策は何ですか?

4

4 に答える 4

1

これを試して、

stringValueは文字列変数だと思います。そうであれば、コードは次のようになります

stringValue = (stringValue.Length < 5) ? stringValue  : stringValue.Substring(0,4);
于 2013-04-03T11:11:15.040 に答える
0

#以外に、直接同等のものはありません。

Substringと を使用して近づくことができますMath.Min

String.Format("{0,5}", stringValue.Substring(0, Math.Min(stringValue.Length, 5)));
于 2013-04-03T11:04:24.300 に答える
0

ニーズに合わせてビルドイン形式はありません。カスタム拡張メソッドを定義して使用してみてください

public static class StringExtensions
{
    public static string TruncateTo(this string str, int maxCharsCount)
    {
        if (str.Length > maxCharsCount)
            return str.Substring(0, maxCharsCount);
        return str;
    }
}

今、あなたはすることができます

Console.WriteLine("{0,3}", "long long long value".TruncateTo(3));
Console.WriteLine("{0,7}", "short".TruncateTo(7));

印刷されます:

lon
  short
于 2013-04-03T11:05:43.960 に答える