2010-04-27 2 views
3

문자열의 모든 형식 매개 변수를 가져 오는 방법이 있습니까?모든 문자열 형식 매개 변수를 얻는 방법

나는이 문자열이 "{0} 테스트 {0} TEST2 {1} TEST3 {2 : ####}" {0} {0} {1 이 결과는 목록이어야합니다 } {2 : ####}

이 기능을 지원하는 내장 된 기능이 있습니까?

답변

2

나는 그런 빌드 - 인 기능에 대해 듣지 않았다 그러나 당신이 (내가 당신의 문자열이 숫자 숫자로 시작 표준 형식 매개 변수가 포함되어 있으리라 믿고있어) 시도 할 수 :

List<string> result = new List<string>(); 
string input = "{0} test {0} test2 {1} test3 {2:####}"; 
MatchCollection matches = Regex.Matches(input, @"\{\d+[^\{\}]*\}"); 
foreach (Match match in matches) 
{ 
    result.Add(match.Value); 
} 

{0} {0} {1} {2:####} 값을 반환합니다 목록에. tehMick의 문자열의 경우 결과는 빈 집합이됩니다.

1

아니요, 이렇게하는 기능이 없습니다. 정규식이나 무언가로 파싱해야합니다.

3

정규식을 사용하여 해당 패턴과 일치하는 모든 부분 문자열을 찾을 수 있습니다.

\{.*?\}과 같은 정규 표현식은 아마도 트릭을 수행합니다.

+1

다음과 같이 이스케이프 처리 된 중괄호를 찾으십시오. "while (true) {{C++;}}"형식 항목이 없습니다. –

+0

좋은 지적. 실제로 C#이나 형식 문자열의 구문에 대해 많이 알지 못합니다. 단일 중괄호로 묶인 항목이 형식 항목이라고 가정하는 것이 합리적입니까? – Syntactic

1

마치 보이지 않습니다. Reflector는 모든 형식 문자열 구문 분석이 StringBuilder.AppendFormat (IFormatProvider, string, object []) 내에서 발생한다고 제안합니다.