2009-09-14 3 views
0

String.Format() 함수에 (자체 함수를 쓰지 않고) 얼마나 많은 자리 표시자를 동적으로 표시 할 수 있습니까? 우리는 15라고 말하면 좋을 것이고, 나를 위해서 {0}-{14}을 생성했을 것입니다. 나는 텍스트 파일을 생성하고 종종 25 개 이상의 컬럼을 가지고있다. 그것은 크게 도움이 될 것입니다.String.Format()에 대한 자리 표시 자 형식 문자열 자동 생성

OK,

제 질문을 다시 말합니다. 실행 시간에 String.Format 함수를 말할 수 있는지 알고 싶었습니다. 직접 입력하지 않고도 형식 문자열에 원하는 자리 표시자를 얼마나 많이 넣었습니까.

나는 지금까지의 반응으로 추측하고있다. 나는 내 자신의 방법을 쓸 것이다.

감사합니다.

+0

당신은 아마 당신의 자신의 함수를 작성해야한다 - 당신이해야 할 노력하고 정확히 이해하는 것이 쉬운 일이 아닙니다. String.Join이 유용 할 수 있습니다. – dbkk

답변

1

AlbertEin의 응답에 약간의 추가로, 나는 String.Format이 당신을 위해 이것을 할 수 있다고 믿지 않습니다. 동적 같이 이전 String.Format 방법을 사용하여 형식 문자열을 만들어야합니다 :

var builder = new StringBuilder(); 

for(var i = 0; i < n; ++i) 
{ 
    builder.AppendFormat("{0}", "{" + i + "}"); 
} 

String.Format(builder.ToString(), ...); 

이 있지만, 정확히 읽을 수 없습니다.

+0

시작 주셔서 감사합니다. 저는 비슷한 일과를 시작했습니다. 나는 뭔가 명확하게 묻기 전에 더 많은 수면을 취해야한다고 생각한다;) – Chris

+0

@Chris - No prob. 포맷중인 코드 블록이 여기에 표시된 것보다 길면 그에 따라 의견을 말하십시오. 이것은 내가 자주 보는 접근법이 아니며 많은 사람들을 혼란스럽게합니다. –

1

형식이없는 경우 string.Format을 사용해야하는 이유는 무엇입니까 (적어도 질문에서 볼 수있는 것보다)? 대신에 stringbuilder를 사용하여 간단한 연결을 사용할 수 있습니다.

그냥 다음 string.Format의이 오버로드를 사용하여 사용자 정의하는 IFormatProvider를 만듭니다

0

직접 할 수있는 방법이있다. 당신은 항상 12 소수점을하려는 경우 예를 들어

, 당신은 할 수 있습니다 :

CultureInfo culture = Thread.CurrentThread.CurrentCulture.Clone(); // Copy your current culture 
NumberFormatInfo nfi = culture.NumberFormat; 
nfi.NumberDecimalDigits = 12; // Set to 12 decimal points 

string newResult = string.Format(culture, "{0}", myDouble); // Will put it in with 12 decimal points 
2

당신은 당신의 메시지 문자열을 생성하는 Enumerable.RangeLINQ를 사용할 수 있습니다.

Enumerable.Range(0, 7).Select(i => "{" + i + "}").ToArray() 

는 다음과 같은 문자열을 생성 :

"{0}{1}{2}{3}{4}{5}{6}"