2016-09-16 2 views
0

루프 내에서 String.Format을 사용하고 싶습니다. 그러나 내에서 변수 i을 정의 할 수 없습니다. 여기에 내 코드String.Format 내에서 변수를 사용하는 방법

StringBuilder Sb; 
for(i=0 ;i<=myObj.length;i++) 
{ 
    Sb=Sb.Append(String.Format("{i,5}",myObj[i].Tostring())); 
} 
+1

무엇을 표시해야합니까? 'myObj [i]'다음에'i'를 인쇄하려고합니까? – itsme86

+0

고정 너비 파일을 생성하려고합니다. i는 배열 객체의 인덱스 또는 열입니다. – TRA

+0

'<='는'! ='또는'<'이어야하기 때문에 충돌이 발생합니다. – dasblinkenlight

답변

4

Format 방법을 사용하는 것입니다, 당신은 PARAMS 배열의 인덱스에 해당하는 번호를 사용합니다. Sb를 다시 할당하지 않습니다 또한

, 단지 전화 Append 또는 AppendFormat :

Sb.Append(String.Format("{0,5}", myObj[i].ToString())); 
//or 
Sb.AppendFormat("{0,5}", myObj[i].ToString()); 

당신이, 당신이 Format을 건너 뛸 수있는 최신의 그리고 최고의 C# 버전에있을 정도로 운이있어와 함께 할 경우 새로운 string interpolation 구문 :

Sp.Append($"{myObj[i],5}"); 

또는 당신이하고있는 모든 패딩이기 때문에, 당신도 할 수 있습니다

Sb.Append(myObj[i].ToString().PadLeft(5)); 
+0

기본값으로 호출되는'myObj [i]'에'ToString()'을 호출 할 필요가 없습니다. – Luiso

+0

@Luiso 값 유형에 ToString()을 기술적으로 호출하면 (매개 변수가 값 유형 인 경우) ToString '을하기 전에 발생하며 성능에 약간 영향을 미칠 수 있습니다 (무시할 만하지만 기술적으로는 동등하지 않음). 나는 동의하지만, 개인적으로 나는 ToString()을 제거 할 것이다. –

+0

PadLeft/PadRight를 사용할 때의 문제는 마지막 빈칸을 100으로 채우고 100 칸을 채우지 않고 8 칸을 차지한다는 것입니다. – TRA

관련 문제