2014-01-15 2 views
1

String.Format을 사용할 때 문자열에 배치 할 변수를 참조하려면 {0}, {1}, {2} 등을 사용합니다.String.Format 정수 대신 문자열을 사용합니다.

string s = String.Format("{0} {1}", "Like", "this."); 

중괄호 안에 정수 대신 문자열 값을 사용할 수있는 방법이 있습니까? 그래야 입력 문자열은 다음과 같습니다.

"{word1} {word2}" 

내가 채워해야 할 영역과 긴 텍스트 파일을 가지고 있기 때문에 나는이 일을하고 너무 많은 분야가 있습니다 배치 할 변수의 정렬 된 목록을 가지고와 변수가 반복 될 수 있습니다.

그래서 인덱스 대신 인덱스 이름을 사용하여 String.Format과 비슷한 메서드를 사용할 수 있습니까?

+0

를 참조 할 수 있습니다 Custom Format strings

하여이를 달성 할 수있는 방법 컴파일러 얼마나 적 위치를 이동하는 매개 변수를 알고 이런 종류의 기능을하지 않는 이유는 무엇입니까? – wudzik

+0

가능한 [이름 지정된 String.Format의 복제본, 가능합니까? C#] (http://stackoverflow.com/questions/1010123/named-string-format-is-it-possible-c-sharp) 및 http://stackoverflow.com/questions/159017/named-string- c-formatting-in-c-sharp. 질문을 게시하기 전에 검색하십시오. –

+2

해결 방법은 하나 있지만 String.Format과는 다릅니다. 일반 문자열을 키워드로 복사 한 다음 String.Replace() 메소드를 사용하여 값을 대체해야합니다. – Nil23

답변

2

String.Format으로는 가능하지 않습니다. 당신은이 작업을 수행 할 수 있습니다

string result = formatString.Replace("{word1}", replacement); 

당신이 값으로 키와 같은 자리 및 교체와 사전 있다고 가정, 당신이 할 수 있습니다 : 내가 확인하기 위해 여기 StringBuilder을 사용하고

Dictionary<string, string> words = new Dictionary<string, string>(); 
words["{word1}"] = "Hello"; 
words["{word2}"] = "World!"; 

StringBuilder result = new StringBuilder("{word1} {word2}"); 
foreach (string key in words.Keys) 
    result.Replace(key, words[key]); 

string finalResult = result.ToString(); 

하는 문자열 모든 Replace에 복사되지 않습니다. 여기에 string을 사용하면됩니다.

관련 문제