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