2016-09-01 6 views
1

입력이 123.45 인 경우 String.Format을 통해 출력 123,45을 얻으려고합니다.string.format - 소수점 구분 기호로 사용되는 쉼표

실제 포맷 문자열 (예 : {0:0.00})은 설정 파일에 저장되고 나중에 파이프 라인으로 변환됩니다.

새 형식을 추가하기 위해 구성 파일을 편집하는 것이 "안전"하며 매우 빠르게 처리 할 수 ​​있습니다. 나중에 실제로 파서를 편집하는 것은 "위험한"것이므로 더 중요한 QA 리소스가 필요하므로이를 피할 필요가 있습니다. 그 결과

, 몇 가지주의 :

  • 난 단지 string.Format(pattern, input)에 액세스 할 수 있습니다. 과부하가 없습니다.
  • 현지화를 보낼 수 없습니다. 나는 내가 string.Format(new System.Globalization.CultureInfo("de-DE"), "{0:0.00}", 123.45)을 보낸다면 내가 필요한 것을 얻었음을 안다. 그러나 나는 현지화를 통과 할 수 없다.

이렇게 할 수 있습니까?
string.Format으로 전달할 수있는 형식이 있습니까? 123.45123,45으로 변환합니까? 당신은 당신이 (100)에 의해 입력을 곱 경우

+0

왜 "." with, using ","replace 메소드 사용 –

+0

@ Ehsan.Saradar 내가 접근 할 수있는 것은 설정 파일인데'string.Format'에 'format' 입력을 지정합니다. 이 파일에서 작동하는 것을 지정해야합니다. 나중에 코드 변경을 할 수있는 경우 이미 작업중인 해결책이 있습니다 ;-) – bgs264

+1

string.Format을 호출 할 때 값의 유형은 무엇입니까? 이미 두 배로 바뀌 었습니까? 'string.Format (새로운 System.Globalization.CultureInfo ("de-DE"), "{0 : 0.00}", "123.45")'가 작동하지 않습니다 (마지막 매개 변수가 문자열로 전달됨에 유의하십시오). –

답변

1

다음 작업을해야합니다 :

double input = 123.45; 
string pattern = "{0:###\\,##}"; 

var result = String.Format(pattern, input*100); 
+0

굉장합니다 상자 밖에서 생각 했으므로 슬프게도 100을 곱할 수는 없었습니다.하지만 고마워요! – bgs264

1

를 그냥 재미 :

물론
 double value =123.45; 
     Console.WriteLine(String.Format("{0:#0.00}\b\b\b,", value)); 

이것은이 작품에 대해서만 커서와 같을 수 있습니다. 그렇지 않으면 백 스페이스 제어 문자가 작동하지 않습니다.

미안하지만, 나는 이것을 달성하는 실제 방법을 생각할 수 없다.

관련 문제