私はtoLocaleString
の出力を取ろうとしており、少し余分な書式設定をしています。通貨記号を金額から切り離し、小数点記号とコンマを保持するにはどうすればよいですか?
$1,234.57
悪くないが、様々な理由のために、私は$
と1
の間にスペースを追加できるようにしたい、:currencyFormattedの値になる
displayAmount = 1234.56789
currencyFormatted = displayAmount.toLocaleString('en-US', {style: 'currency', currency: 'USD'});
:私はこのコードで開始しましたその周りにスパンをラップします。だから、所望の出力は次のようになります。
<span>$</span> 1,234.57
だから私は、私はother answers on Stack Overflow由来このコード、コメントを追加しました:私は私の分割があったことを実現
<span>$</span> 1
:
symbolSeparated = currencyFormatted.split(/(\d+)/).filter(Boolean);
myElement.innerHTML = "<span>" + symbolSeparated[0] + "</span> " + symbolSeparated[1];
をしかし、私が得ましたカンマと小数点をテキストとして考え、そこで分割します。私はという/[^0-9\.]+/g
のようないくつかの正規表現を試しましたが、ほとんど失敗したように見え、symbolSeparated[1]
は未定義です。
いずれの場合でも、それは正規表現である必要はなく、関数の任意の組み合わせであっても何でもよい。質問は、小数点とカンマを保護しながら、通貨記号を数値から分ける方法はありますか?
通貨記号がの長さは1つの文字(そうでない場合、私はちょうどsubstring()
を使用すること)であることが保証されていませんのでご注意ください。私が知る限り、これは1文字から3文字にすることができます。
また、jQueryに依存しない回答が優先されます。
を対応していただきありがとうございます。私が得ている結果は ' $ 1234.57 $'です。私はなぜドル記号が繰り返されているのか分からないが、いずれにしてもその正規表現は間違いなく正しいのだろうか? – Questioner
正規表現自体は問題ありません。一致するグループにアクセスするときに間違ったインデックスを使用しました。私は私の答えを訂正しました。正しい行はmyElement.innerHTML = "" + m [1] + "" + m [2]です。 –
素晴らしい作品です、ありがとうございます!ちょうど私は明らかです、 'm [0]'は最初に提供された文字列の完全な複製物でしょうか? – Questioner