2013-03-30 18 views
18
içindeki işlenmemiş (kaçtı) kelimeleri koymak nasıl bir tarih biçimlendirme am

:String.Format

str = String.Format("{0:MMM d m:mm"+yearStr+"}", dt); 

ben "d" den sonra "at" sözcüğü koymak istiyorum ama istemiyorum biçimlendirmek için dize. Ben sadece "at" kelimesini istiyorum.

Bunu nasıl başarabilirim?

cevap

29

Daha uzun dizeleri için ters eğik çizgi her karakter kaçan daha muhtemelen daha kolay ve biraz daha okunabilir tırnak ile edebi dizeleri çevreleyebilir ayraç ").

(Ve h:mm yerine m:mm anlama geliyordu?) Sadece eğlence için

+0

Bu çözüm {} .. – Baconbeastnz

+0

birden bloklarını kullanarak bana izin vermedi, benim için diğer cevaplar iyi çalıştı. –

+0

@JeppeStigNielsen: İyi bir nokta –

9
string.Format(@"{0:MMM d \a\t m:mm" + yearStr + "}", dt); 

Not çift kaçış - Ben normal karakter olarak dize içinde \ yazabiliyordu yüzden bir varbatim dize kullanılır. DateTime için biçimlendirme rutin daha sonra bir çıkış sırası olarak (tekrar) yorumlar.

string.Format("{0:MMM d} at {0:m:mm" + yearStr + "}", dt); 

ilk varyant bazıları tarafından iğrenç düşünülebilecek:

İşte basit bir türüdür. İkincisi, okumak için çok açık.

str = String.Format("{0:MMM d 'at' m:mm"+yearStr+"}", dt); 

(MSDN Kitaplığı'nda Custom Date and Time Format Strings Bkz: "Değişmez dize için arama:

+0

Ben string str 'ile cevap çalışıyordu 1 = String.Format ("{0: MMM} {1: dm: mm" + yearStr + "}", dt, dt);' ama seninkini düşünüyorum daha iyi. – Steve

+0

neden bir \ 'önce' \ 'kullanın. Bir \ t o işe yarayabilecek – Kashif

+1

@MuhammadKashifNadeem çalışacağını düşünüyorum ama umrumda değil. Doğru olduğundan emin olmak istiyorum ve tutarlı olmasını istiyorum. (?: Sermaye ile mm' 'H' Veya belki de' H) – usr

2

ama çalışır.

var what=new object[] { "{{{{0:MMM d}}}} {0} {{{{0:m:mm:{{0}}}}}}", "at", yearStr, dt }; 
var that=what.Aggregate((a, b) => String.Format((String)a, b)); 

Sen birinde iki satır birleştirebilirsiniz. İki biçimleri arasında koymak istiyorum at da parametreli olduğunu.