문자열의 모든 형식 매개 변수를 가져 오는 방법이 있습니까?모든 문자열 형식 매개 변수를 얻는 방법
나는이 문자열이 "{0} 테스트 {0} TEST2 {1} TEST3 {2 : ####}" {0} {0} {1 이 결과는 목록이어야합니다 } {2 : ####}
이 기능을 지원하는 내장 된 기능이 있습니까?
문자열의 모든 형식 매개 변수를 가져 오는 방법이 있습니까?모든 문자열 형식 매개 변수를 얻는 방법
나는이 문자열이 "{0} 테스트 {0} TEST2 {1} TEST3 {2 : ####}" {0} {0} {1 이 결과는 목록이어야합니다 } {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의 문자열의 경우 결과는 빈 집합이됩니다.
아니요, 이렇게하는 기능이 없습니다. 정규식이나 무언가로 파싱해야합니다.
정규식을 사용하여 해당 패턴과 일치하는 모든 부분 문자열을 찾을 수 있습니다.
\{.*?\}
과 같은 정규 표현식은 아마도 트릭을 수행합니다.
마치 보이지 않습니다. Reflector는 모든 형식 문자열 구문 분석이 StringBuilder.AppendFormat (IFormatProvider, string, object []) 내에서 발생한다고 제안합니다.
중괄호를 모두 찾는 좋은 출발점을 얻으려면 FormatWith extension method을 살펴 봐야합니다.
다음과 같이 이스케이프 처리 된 중괄호를 찾으십시오. "while (true) {{C++;}}"형식 항목이 없습니다. –
좋은 지적. 실제로 C#이나 형식 문자열의 구문에 대해 많이 알지 못합니다. 단일 중괄호로 묶인 항목이 형식 항목이라고 가정하는 것이 합리적입니까? – Syntactic