NumberFormatter - 범위가 지정됨, 전역

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기6분
  • NumberFormatter API에는 현재 사용자의 언어에 따라 형식이 지정된 숫자를 반환하는 메서드가 포함되어 있습니다.

    이 API는 범위가 지정된 앱과 전역 앱에서 사용할 수 있으며 sn_i18n 네임스페이스에서 실행됩니다.

    언어 또는 로케일별로 서식이 지정되면 사용자는 예상대로 번호를 볼 수 있습니다. 예를 들어 로캘이 fr(프랑스어)인 경우 100.00으로 제공된 값은 100,00으로 반환됩니다.

    NumberFormatter – format(Number number)

    현재 사용자의 언어 설정에 따라 형식이 지정된 숫자의 문자열 표현을 반환합니다.

    표 1. 매개변수
    이름 유형 설명
    번호 번호 임의 크기의 번호입니다.
    표 2. 반환
    유형 설명
    문자열 현재 사용자의 언어 설정에 따라 형식이 지정된 숫자입니다.

    다음 예제에서는 언어를 스페인어로 설정한 사용자에 대한 반환 결과를 보여 줍니다.

    gs.info("Number is: " + sn_i18n.NumberFormatter.format(123456.789));
    gs.info("Number is: " + sn_i18n.NumberFormatter.format(-123456.789));

    출력:

    Number is: 123.456,789
    Number is: -123.456,789

    NumberFormatter – formatLang(숫자 숫자, 문자열 언어)

    매개변수로 전달된 언어에 따라 형식이 지정된 숫자의 문자열 표현을 반환합니다.

    표 3. 매개변수
    이름 유형 설명
    번호 번호 임의 크기의 번호입니다.
    언어 문자열 IETF BCP-47을 준수하는 언어 태그입니다.
    표 4. 반환
    유형 설명
    문자열 매개변수로 전달된 언어에 따라 형식이 지정된 숫자입니다.

    다음 예는 독일어 설정에 대한 출력을 보여줍니다.

    gs.info("Number is: " + sn_i18n.NumberFormatter.formatLang(123456.789, "de-de"));
    gs.info("Number is: " + sn_i18n.NumberFormatter.formatLang(-123456.789, "de-de"));

    출력:

    Number is: 123.456,789
    Number is: -123.456,789

    NumberFormatter - parseWithLocale(문자열 번호, 문자열 언어, 문자열 국가)

    전달된 텍스트 문자열에서 왼쪽에서 오른쪽으로 회전하는 숫자를 구문 분석하여 숫자 값을 추출합니다. 그런 다음 전달된 국가 및 언어 코드를 사용하여 번호의 로캘을 식별하고 구문 분석된 번호를 해당 형식으로 반환합니다.

    이 메서드는 숫자 값 또는 통화 구분 기호로 인식되지 않는 문자에 도달할 때까지 문자열을 구문 분석합니다.

    표 5. 매개변수
    이름 유형 설명
    번호 문자열 구문 분석할 문자열입니다. 이 문자열에는 숫자 값과 통화 구분 기호(예: 쉼표 및 소수점)가 포함될 수 있습니다. 예: "24,506.55" 또는 "45.677,89".
    언어 문자열 두 문자로 된 ISO-639 언어 코드입니다.
    국가 문자열 두 문자로 된 ISO-3166 국가 코드입니다.
    표 6. 반환
    유형 설명
    번호 지정된 로케일의 형식으로 구문 분석된 번호입니다.

    문자열의 첫 번째 문자를 구문 분석할 수 없는 경우 예외를 발생시킵니다.

    예:
    • "123.34": 로캘 소수 구분 기호가 마침표인 한 123.34로 구문 분석합니다.
    • "1,234.56": 로케일 그룹화 구분 기호가 쉼표이고 소수 구분 기호가 마침표인 경우 1234.56으로 구문 분석합니다.
    • "1.234.567,89": 그룹화 구분 기호가 마침표가 아닌 경우 1로 구문 분석합니다.
    • "123x456": 123으로 구문 분석합니다.
    • "text123": 메서드에서 ParseException을 throw하도록 합니다.

    다음 코드 예제에서는 다양한 로캘에 대한 문자열 구문 분석과 예기치 않은 구분 기호가 있는 문자열 구문 분석을 보여 줍니다. 마지막 예제에서는 공백이 유효한 구분 기호가 아니기 때문에 문자열을 부분적으로만 구문 분석합니다.

    var x = sn_i18n.NumberFormatter.parseWithLocale("48,837.77", "en", "US");
    var y =  sn_i18n.NumberFormatter.parseWithLocale("77.931,22", "de", "DE");
    var z = sn_i18n.NumberFormatter.parseWithLocale("562 339,89", "fr", "FR");
    var specialCase = sn_i18n.NumberFormatter.parseWithLocale("400 797,67", "en", "US");
    
    gs.info(x);
    gs.info(y);
    gs.info(z);
    gs.info(specialCase);

    출력:

    48837.77
    77931.22
    562339.89
    400

    NumberFormatter - parseWithSeparators(String number, String groupingSeparator, String decimalSeparator)

    구문 분석할 수 없는 문자를 만날 때까지 왼쪽에서 오른쪽으로 이동하면서 전달된 텍스트 문자열에서 숫자를 구문 분석하고 반환합니다. 구문 분석 가능한 값에는 숫자와 지정된 그룹화 및 10진수 구분 기호가 포함됩니다.

    표 7. 매개변수
    이름 유형 설명
    번호 문자열 구문 분석할 문자열입니다. 이 문자열에는 숫자 값과 쉼표 및 소수점과 같은 지정된 구분 기호가 포함될 수 있습니다. 예: "24,506.55" 또는 "45.677,89".
    groupingSeparator 문자열 전달된 문자열 내에서 그룹화 구분 기호(천 단위 구분 기호라고도 함)를 나타내는 문자입니다.

    예: 쉼표 ",", 마침표 "." 또는 공백 " ".

    decimalSeparator 문자열 전달된 문자열 내의 10진수 구분 기호를 나타내는 문자입니다.

    예: 쉼표 ",", 마침표 "." 또는 공백 " ".

    표 8. 반환
    유형 설명
    번호 구문 분석된 번호입니다.

    문자열의 첫 번째 문자를 구문 분석할 수 없는 경우 예외를 발생시킵니다.

    예:
    • "123.34": 로캘 소수 구분 기호가 마침표인 한 123.34로 구문 분석합니다.
    • "1,234.56": 로케일 그룹화 구분 기호가 쉼표이고 소수 구분 기호가 마침표인 경우 1234.56으로 구문 분석합니다.
    • "1.234.567,89": 그룹화 구분 기호가 마침표가 아닌 경우 1로 구문 분석합니다.
    • "123x456": 123으로 구문 분석합니다.
    • "text123": 메서드에서 ParseException을 throw하도록 합니다.

    다음 코드 예제에서는 다양한 구분 기호를 사용하여 숫자를 구문 분석하는 방법을 보여 줍니다. 마지막 구문 분석 예제는 공백이 유효한 구분 기호가 아니므로 숫자의 처음 세 자리 만 구문 분석합니다.

    var x = sn_i18n.NumberFormatter.parseWithSeparators('48,837.77', ',', '.');
    var y =  sn_i18n.NumberFormatter.parseWithSeparators('77.931,22', '.', ',');
    var z = sn_i18n.NumberFormatter.parseWithSeparators('562 339,89', ' ', ',');
    var specialCase = sn_i18n.NumberFormatter.parseWithSeparators('400 797,67', '.', ',');
    
    gs.info(x);
    gs.info(y);
    gs.info(z);
    gs.info(specialCase);

    출력:

    48837.77
    77931.22
    562339.89
    400