2016-04-01 18 views

cevap

5

Sadece 000-0000 numaralı özel sayı biçimini kullanın.

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

Ne yazık ki, tek bir ifade içinde bir dizenin opsiyonel parçalar dahil etmek çok kolay değil, ama Bu mümkün:

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

Ve uzatma opsiyonlu olarak

, bunu yapabilirdi. Yine de cram yapmaya çalışmanı tavsiye etmem. "Okunabilir" tanımınız için daha okunabilir bir yaklaşımı tercih ederim.

+0

Cevabınız için teşekkür ederiz. Bir takip sorusu sorabilirsem: Ayrıca, telefon numarasının ayrı bir değişkeni olmasına rağmen, tüm telefon numaralarının telefon uzantısına sahip olmaması gerekir. PhoneExt için null değerini nasıl değerlendirebilirim ve null değilse de C# 6.0 yaklaşımını kullanarak aynı dizeye ekleyebilirim. Kolayca biçimlendirilmiş + = (phoneExt == null? "" + "Ext." + PhoneExt.ToString()) yapabilirim ancak bu yeni yaklaşıma hakim olmak istiyorum. – Sam

+0

Takip eden sorumun cevabını çözdüm: var formatted = $ "{phoneNumber: 000-0000} {(string.IsNullOrEmpty (phoneExt)?" ":" Ext. "+ PhoneExt.ToString())}" ; – Sam

+0

Buna bakmanın yolu, parantez içindeki herhangi bir ifadenin ('{}') normalde yazabildiğiniz herhangi bir C# ifadesi olmasıdır. Bu, ToString() işlevinin çağrılmasıdır. Özel bir biçim varsa (':' ile gösterilir), ':' öğesinin sağındaki her şey biçimlendirme dizesidir. Bu durumda, temel olarak, "$" {phoneNumber: 000-00000} "', "phoneNumber.ToString (" 000-0000 ")' ile aynıdır. Bu sözdizimini kullanarak eklentiyi eklemeyecektim çünkü çirkinleşmeye eğilimli olduğu için gerçekten de en iyi çözüm bu değil. Ama aradığın şeyi başarmanın daha güzel yolları var. –

İlgili konular