NumberFormatter - スコープ付き、グローバル

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:6分
  • NumberFormatter API には、現在のユーザーの言語に従って書式設定された数値を返すメソッドが含まれています。

    この API は、スコープ対象アプリとグローバルアプリで利用でき、 sn_i18n 名前空間で実行されます。

    言語またはロケールで書式設定すると、ユーザーは想定どおりに数値を表示できます。たとえば、ロケールが fr (フランス語) の場合、100.00 として指定された値は 100,00 として返されます。

    NumberFormatter – format(数値、数値)

    現在のユーザーの言語設定に従って書式設定された数値の文字列表現を返します。

    表 : 1. パラメーター
    名前 タイプ 説明
    番号 [Number (番号)] 任意のサイズの数。
    表 : 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. パラメーター
    名前 タイプ 説明
    番号 [Number (番号)] 任意のサイズの数。
    language 文字列 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. パラメーター
    名前 タイプ 説明
    number 文字列 解析する文字列です。この文字列には、数値と通貨区切り記号 (カンマや小数点など) を含めることができます。例: 「24,506.55」 または 「45.677,89」
    language 文字列 2 文字の ISO-639 言語コード。
    文字列 2 文字の ISO 3166 国コード。
    表 : 6. 戻り値
    タイプ 説明
    [Number (番号)] 指定されたロケールの形式で解析された数値。

    文字列の最初の文字を解析できない場合は、例外をスローします。

    例:
    • "123.34": ロケールの小数点がピリオドである限り、123.34 に解析されます。
    • "1,234.56":ロケールのグループ化セパレーターがカンマで小数点がピリオドである限り、1234.56 に解析されます。
    • "1.234.567,89": グループ化セパレーターがピリオド以外の場合、1 に解析されます。
    • "123x456": 123 に解析します。
    • "text123": メソッドが ParseException をスローします。

    次のコード例は、さまざまなロケールの文字列の解析と、予期しない区切り文字を含む文字列の解析を示しています。最後の例では、スペースが有効なセパレーターではないため、文字列を部分的にしか解析しません。

    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)

    渡されたテキスト文字列から、解析できない文字が見つかるまで、左から右にトラバースしながら数値を解析して返します。解析可能な値には、数値と、指定されたグループ化および小数点が含まれます。

    表 : 7. パラメーター
    名前 タイプ 説明
    number 文字列 解析する文字列です。この文字列には、数値と、指定された区切り文字 (カンマや小数点など) を含めることができます。例: 「24,506.55」 または 「45.677,89」
    groupingSeparator 文字列 渡された文字列内のグループ化セパレーター (桁ごとの区切り文字とも呼ばれます) を示す文字。

    例:カンマ「,」、ピリオド「.」、またはスペース「」。

    decimalSeparator 文字列 渡された文字列内の小数点を示す文字。

    例:カンマ「,」、ピリオド「.」、またはスペース「」。

    表 : 8. 戻り値
    タイプ 説明
    [Number (番号)] 解析された数値。

    文字列の最初の文字を解析できない場合は、例外をスローします。

    例:
    • "123.34": ロケールの小数点がピリオドである限り、123.34 に解析されます。
    • "1,234.56":ロケールのグループ化セパレーターがカンマで小数点がピリオドである限り、1234.56 に解析されます。
    • "1.234.567,89": グループ化セパレーターがピリオド以外の場合、1 に解析されます。
    • "123x456": 123 に解析します。
    • "text123": メソッドが ParseException をスローします。

    次のコード例は、さまざまな区切り記号を使用して数値を解析する方法を示しています。最後の解析例では、スペースは有効な区切り文字ではないため、数値の最初の 3 桁のみを解析します。

    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