2016-04-01 5 views

答えて

5

カスタム番号形式000-0000を使用してください。

var phoneNumber = 5551234; 
int? extension = 9876; 
var formatted = $"{phoneNumber:000-0000}" // "555-1234" 
if (extension != null) 
    formatted = $"{formatted} Ext. {extension}"; // "555-1234 Ext. 9876" 

// or alternatively 
var formatted = $"{phoneNumber:000-0000}{(extension != null ? $" Ext. {extension}" : "")}"; 

残念ながら、それは単一の式の中の文字列のオプションパーツが含まれることは非常に簡単ではありませんが、それはなんとかです:

var phoneNumber = 5551234; 
var formatted = $"{phoneNumber:000-0000}" // "555-1234" 

とオプションの拡張子を持つ

は、あなたがこれを行うことができます。私はそれをすべて詰め込もうとすることをお勧めしません。私はあなたの "可読性"の定義のためのより読みやすいアプローチを選ぶだろう。

+0

ありがとうございました。私はフォローアップの質問をするかもしれません:私は別の変数で電話番号を取得しますが、すべての電話番号が電話番号を持っているわけではありません。 phoneExtのnull値を評価するにはどうしたらいいですか?nullでない場合は、C#6.0アプローチを使用して同じ文字列に追加します。私は簡単にフォーマットされた+ =(phoneExt == null? "" + "Ext" + phoneExt.ToString())できますが、私はこの新しいアプローチを習得したいと思います。 – Sam

+0

私はフォローアップの質問への答えを見つけました: var formatted = $ "{phoneNumber:000-0000} {(string.IsNullOrEmpty(phoneExt)?" ":" Ext "+ phoneExt.ToString())}" ; – Sam

+0

それを見る方法は、中括弧( '{}')内のどの式も普通に書くことができ、ToString()が呼び出されるC#式だけです。 ( ':'で示される)カスタムフォーマットがある場合、 ':'の右側に書式設定文字列があります。したがって、本質的にこの場合、 '$" {phoneNumber:000-00000} "は実質的に' phoneNumber.ToString( "000-0000") 'と同じです。私はこの構文を使用して拡張子を追加しません。なぜなら、実際には扱いが悪いので、扱いにくいからです。しかし、あなたが探しているものを達成するためのより良い方法があります。 –

関連する問題