2012-08-27 2 views
3

1000 단위 구분 기호없이 현지화 된 숫자를 생성하는 숫자 형식이 있습니까?천 단위 구분 기호의 숫자 형식

Globalize.culture().numberFormat[","]=""; 

하지만 몇 가지 내가 그것을 떨어져 원하는 필드와이 켜져 있어야 할 곳에 몇 가지가 있습니다

Globalize.format("1000.12", "n?") 

나는 내가 할 수있는 알고 있습니다. 예를 들어 ... 값이 :

1000.123 -> 로캘에 따라 1000, 12 또는 1000.12로 표시하려고합니다.하지만 천 단위 구분 기호가 없습니다.

답변

4

"n"형식 대신 "d"형식을 사용하여 1000 단위 구분 기호를 제외 할 수 있습니다. 당신이 소수 부분에 대해 신경 쓰지 않는 경우에만 동작합니다

Globalize.format(1000.12, "d"); 

편집
참고. 당신이 소수 부분에 대해 신경 경우

, 지금까지의 내가 아는 한, 당신은 다음 방법 중 하나 말미 암지 않고는 천 단위 구분을 배제 할 수 없다 :

  1. 는 문화 객체의 수천 문자로 설정 빈 문자열 :

    Globalize.culture().numberFormat[","] = ""; 
    Globalize.format(1000.12, "n"); 
    

    당신은 비교적 쉽게 유틸리티 함수에이를 돌 수 있었다 :

    function formatNumberNoThousands(num, format, culture) { 
        var numberFormat = Globalize.cultures[culture || Globalize.culture().name].numberFormat, 
         thousands = numberFormat[","]; 
        numberFormat[","] = ""; 
        try { return Globalize.format(num, format, culture); } 
        finally { numberFormat[","] = thousands; } 
    } 
    
  2. 쉽게 유틸리티 기능으로 전환 할 수

    Globalize.format(1000.12, "d").replace(new RegExp("\\" + Globalize.culture().numberFormat[","], "g"), ""); 
    

    : 당신이 알고있는 경우에,이 방법으로

    function formatNumberNoThousands(num, format, culture) { 
        return Globalize.format(num, format).replace(new RegExp("\\" + Globalize.culture(culture).numberFormat[","], "g"), ""); 
    } 
    

    가 더있을 수 없을 것

  3. 는 형식의 문자열 결과에 교체를 수행 서식있는 결과에서 1 천자를 초과하면 정규식을 제거 할 수 있습니다. 그렇지 않으면 많이 사용하거나 루프 내부에서 사용할 계획이라면 regexp를 캐시하고 다시 사용하는 것이 좋습니다.

+0

이 부분적으로 만 작동합니다 - 그것은 (문화에 따라 또는'1000,12')'대신 1000.12''의 1000'의 결과로 소수 부분을 삭제합니다 ... 내 대답 업데이트 – Krease

+0

@ 크리스 반영합니다. – Tony

+0

awesome - 매우 유용한 업데이트 :) – Krease

관련 문제