2013-03-30 3 views
18
내부에서 처리되지 않은 (탈출) 단어를 넣어하는 방법은 날짜를 포맷하고

:및 String.format

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

나는 "D"후 "에"단어를 넣어 싶어하지만 내가 원하지 않는 형식화 할 문자열. 나는 "at"이라는 단어를 원한다.

어떻게하면됩니까?

답변

29

당신은 더 이상 문자열을 백 슬래시로 모든 문자를 이스케이프 것보다 ​​아마도 더 쉽고 좀 더 읽을 따옴표와 리터럴 문자열을 둘러싸고 수 있습니다 구분 기호 ").

(그리고 당신은 h:mm 대신 m:mm을 찾으시는 것입니까?) 그냥 재미를 위해

+0

이 솔루션은 나에게 가장 잘 맞았고, 다른 답변은 {}의 여러 블록을 사용하게하지 않았다. – Baconbeastnz

+0

(또는 'H : mm' 대문자'H '도 포함) –

+0

@JeppeStigNielsen : 좋은 지적. –

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

참고 이중 이스케이프는 - 나는 일반 문자로 문자열 내부 \을 쓸 수 있었다, 그래서 나는 varbatim 문자열을 사용했다. DateTime의 형식화 루틴은이 (다시)를 이스케이프 시퀀스로 해석합니다.

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

첫 번째 변형하는 것은 일부에 의해 구역질 간주 될 수 있습니다

여기에 간단한 변종이다. 후자의 것은 읽기에 매우 명확합니다.

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

이 (MSDN 라이브러리 Custom Date and Time Format Strings를 참조하십시오 "리터럴 문자열을 검색 :

+0

+1 {stringstr = String.Format ("{0 : MMM} at {1 : dm : mm"+ yearStr + "}", dt, dt); '로 대답하려고했는데, 더 나은. – Steve

+0

a 앞에 '\'를 사용하는 이유는 무엇입니까? 나는 작동하지 않을 것이라고 생각한다. – Kashif

+1

@MuhammadKashifNadeem 그것이 효과가 있을지 모르나 나는 상관하지 않는다. 올바른지 확인하고 일관성있게 유지하고자합니다. – usr

2

,하지만 작동합니다.

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)); 

두 줄을 하나로 병합 할 수 있습니다. 두 가지 형식 사이에 넣으려는 at도 매개 변수화됩니다.