2

タイプの変数を追加し、intそれを使用して次のようなものを呼び出しました。

x.ToString("0000");

xタイプに変更しましstringたが、上記は無効になりました。x今すぐフォーマットする唯一の方法は次のとおりです。

string.Format("{0:0000}",x);

またはショートカットはありますか?

文字列の作成に使用StringBuilderしているので、同じことが当てはまりますAppendFormatか?

4

7 に答える 7

3

数値のように文字列をフォーマットすることはできないため、文字列に数値フォーマットを適用する場合は、最初に文字列を数値に解析する必要があります。

Int32.Parse(x).ToString("0000")
于 2012-10-26T13:35:39.037 に答える
1

本当の近道はありません。

Int32intが持つべき先行ゼロの数の概念はありません。

文字列にフォーマットすることで正しいことをしています。それを使って何かを表示しているのであれば、それは実際には問題ではないはずです(x数値操作を実行したい場合はまだ問題があります)。

AppendFormatのようstring.Formatに機能しますが、呼び出されたStringBuilderオブジェクトに追加されます。

于 2012-10-26T13:36:09.603 に答える
1

残念ながら、これが最善の方法です。各タイプには、オーバーライドできる独自のToStringメソッドがあることに注意してください。int型のToStringを使用すると、文字列に変換するときに整数をフォーマットするためのフォーマットを渡すことができます。DateTimeも同様です。ただし、ソースはすでに文字列型であるため、文字列型のToStringは文字列のみを返します。文字列をフォーマットするには、string.Formatを呼び出す必要があります。

于 2012-10-26T13:36:54.420 に答える
0

いいえ。

整数の文字列表現を実際の整数に変換して、必要な数の先行ゼロで正しくフォーマットできるようにする必要があります。

文字列がすでにその形式になっている場合、なぜそれを再フォーマットする必要があるのですか?

于 2012-10-26T13:35:37.473 に答える
0

MSDNは、指定子を使用するいくつかの方法を示しています:http: //msdn.microsoft.com/en-us/library/fzeeb5cd.aspx#Y759

x.ToString("G");

このリンクには、すべての形式オプションが一覧表示されます:http: //msdn.microsoft.com/en-us/library/dwhawy9k.aspx

于 2012-10-26T13:37:32.080 に答える
0
x.PadLeft(4, '0'); 

と同じ結果が得られます

x.ToString("0000"); 

それxがまだ数字であるという条件で(それはそうなstringので、少なくともTryCast()それを元に戻さずにそれを確認する方法はありません。

于 2012-10-26T13:40:47.263 に答える
0

文字列補間を使用します(C#6から開始)。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

{<interpolationExpression>[,<alignment>][:<formatString>]}

あなたの例で:

$"{x:0000}"

于 2021-03-17T15:55:12.190 に答える