2013-03-06 5 views
0

데이터베이스에서 데이터를 가져 와서 문자열로 저장하는 클래스가 있습니다.숫자 서식 지정

sAnswer은 일반적으로 int 일 수 있습니다. 그것이 int 일 때 나는 콤마 분리자를 갖도록 포맷하려한다. (1000000 -> 1,000,000) 어떻게해야합니까?

Format을 사용하면 var val = string.Format("{0:n0}", sAnswer);과 같이 작동하지 않습니다.

+0

는 "쉼표 구분이"무엇을 의미합니까? 1000000과 같이 큰 숫자라면 "1,000,000"으로 형식이 지정됩니까? –

+0

이 맞다면, 나는 OP – Mike

답변

3

문자열이 아닌 값을 문자열로 변환 할 때 서식이 적용됩니다. 이미 문자열 인 값에는 서식을 적용 할 수 없습니다. 당신은 int에 다시 string을 변환해야합니다 일시적으로

string val = String.Format("{0:n0}", Int32.Parse(sAnswer)); 

당신은 NumberStyles 상수

string val = String.Format("{0:n0}", Int32.Parse(sAnswer, 
               NumberStyles.AllowLeadingWhite | 
               NumberStyles.AllowTrailingWhite| 
               NumberStyles.AllowExponent)); 

또는 단순히 사용하여의 비트 조합을 사용하여 변환을 시도 Int32.Parse하는 방식에 영향을 미칠 수있다 NumberStyles.Any enum 상수는 최대의 유연성을 제공합니다. sAnswer은 (예를 들어 빈 문자열 등) 잘못된 항목을 포함 할 경우, 안전한 변환

string val; 
int i; 
if (Int32.TryParse(sAnswer, out i)) { 
    val = String.Format("{0:N0}", i); 
} else { 
    val = ""; // Assign a default value here 
} 
+0

에서 이것을 바꿀 것이다 :이 오류 :'입력 문자열이 올바른 형식이 아니다 .' – Mike

+0

'sAnswer' 란 무엇입니까? 유효한'int'를 나타내는 텍스트 여야합니다. –

+0

예! 그 마지막 대답은 효과가있었습니다! 고맙습니다! – Mike

2

을 수행 하는가에 대해이 작업을하면

int answerInt; 
if (int.TryParse(sAnswer, out answerInt)) 
{ 
    sAnswer = answerInt.ToString("#,0", CultureInfo.InvariantCulture) 
} 
+0

'out' 매개 변수로 덮어 쓸 계획이라면'answerInt'의 기본값을 지정하지 마십시오. 구문 분석하지 않으면 그냥 버려집니다 ('0'으로 설정). –

+0

@ChrisSinclair, 고맙습니다. – Kane

+0

'string'을'int'로 형 변환 할 수 없습니다. 예외 ''문자열 '을'int ' "'로 변환 할 수 없습니다. –

관련 문제