2016-10-27 22 views
-1

"$ 2,000"のような文字列を取り込むテキスト入力フィールドがあります。私の機能では、これを数値に変換して数学的関数を実行し、別のドル値として吐き出す必要があります。これは "$ 2,500.56"(I.E.ではなく "$ 2,500.567")のようにフォーマットされます。Javascript:文字列を整数に変換してから文字列に戻す最も効率的な方法

var amount = "$2,000.58" 
// "2000.58" 
var amount_no_sym = amount.replace(/[^\d\.]/g, ''); 
//2000.58 
var amount_integer = parseFloat(amount_no_sym); 
//2000.58 (will cut out any additional decimal places) 
var amount_decimals = amount_integer.toFixed(2); 
//Final output is "$2,000.58" - the toLocaleString doesn't add back the , here? 
var amount_dollar_string = "$" + amount_decimals.toLocaleString(); 


var amount = "$2,000.58" 
// "2000.58" 
var amount_no_sym = amount.replace(/[^\d\.]/g, ''); 
// 2000.58 
var amount_integer = parseFloat(amount_no_sym); 
//Final output is "$2,000.58"- but sometimes it will be something like "$3,564.345" for certain calculations. 
var amount_dollar_string = "$" + amount_integer.toLocaleString(); 

最も最適解があれば二番目に移動し、文字列を処理する関数を記述し、小数点以下の最後の番号を遮断するために、次のようになります。ここで私はこれまでに実行した二つの試験です2つ以上の....がありますか?もっと簡単な方法があり、私はあまり仕事をしていますか?

ありがとうございます!

+0

最も効率的な?最適な?簡単ですか?最短? –

答えて

2

は書式設定、独自の番号をしないでください。そのためのAPIがあります。

var formatter = new Intl.NumberFormat("en-us", { style: "currency", currency: "USD" }); 
 
console.log(formatter.format(2000.58)); 
 

+0

これは私の必要性に完全に合っています。ありがとうございました! –

1

いずれの場合も、parseFloat()を呼び出すことを避けることができます。は、オペランドを数値に変換しようと試みます。そして、あなたはまた、引数として渡す目的のロケールおよびオプションを使用してオブジェクトNumber.prototype.toLocaleString()を使用することができ、通貨フォーマットする:

var amount = '$2,000,344.58', 
 
    amount_integer = +amount.replace(/[^\d\.]/g, ''), 
 
    amount_dollar_string = amount_integer.toLocaleString('en-EN', { 
 
     style: 'currency', 
 
     currency: 'USD' 
 
    }); 
 

 
console.log(amount_integer); 
 
console.log(amount_dollar_string);

+0

それをすべて敷設し、そのように説明してくれてありがとう! –

関連する問題