2011-12-16 4 views
3

文字列から先行ゼロをすべて削除する方法を知っている人はいますか?文字列から値を削除する

var str = 000890 

文字列値は、私は最初の3個の0を削除する必要があり、上記の例ではそうは0よりも大きい番号の前にすべて0を削除できるようにする必要がありますので、すべての時間を変更します。だから、結果は890

答えて

4
var resultString = str.replace(/^[0]+/g,""); 
+0

それは申し訳ありません...明らかに我々は同様に考える。 – Anders

+1

@アンダーズ心配しない - 賢明な人は同様に考える傾向があります:) –

+0

抽選の運行、おめでとう;) – Anders

5

を参照してください次のようになります。this question

var resultString = str.replace(/^[0]+/g,""); 
2

私はこのような機能は、あなたは、単に引用符を削除することを行うことができます

function replacezeros(text){  
     var newText = text.replace(/^[0]+/g,""); 
     return newText; 
} 
+1

新しい私はこの1つのパンチに殴られるだろう –

-1

を動作するはずだと思います。

var str = 000890; 
//890 
var str = "000890"; 
//000890 
2

それは、文字列として滞在数にキャストして、文字列に戻ってそれをキャストする必要がある場合:

var num = '000123'; 
num = String(Number(num)); 
console.log(num); 

あなたはまた、速記num = ''+(+num);を使用することができます。しかし、私は最初のフォームをより読みやすくすることができます。

+0

+1最もクリーンなソリューション 'String(Number(num)) 'と同時に最も速い解決策であると思われるものを投稿するために' –

2

問題が本当に定義されている場合は、他の人が投稿した正規表現ベースの回答のいずれかを使用してください。問題は、あなたの文字列にゼロ詰め整数を持っており、ゼロパディングなし整数値を操作する必要があるだけということであれば、あなたはこのような整数に変換することができ

parseInt("000890", 10) # => 890 

結果は整数890で、文字列は"890"ではないことに注意してください。また、文字列がゼロで始まるので、ここでは基数10が必要です。

2
parseInt('00890', 10); // returns 890 
// or 
Number('00890'); // returns 890 
9

私たちはそれぞれこれを行う方法があります。私はjsperf.com上でテストを作成しましたが、結果は

String(Number('000890')); 

は(グーグルクロームの)最速で示しています。ここで


enter image description here

は、Firefox、IE、およびChromeの@ BenLeeさんのコメントに基づいて the updated testための番号です。

enter image description here

+2

nice job、man +1 –

+0

私のChrome 16(Linux版)では、オプション2と3のパフォーマンスがあなたよりもずっと近くなっています(私の場合は、結果は正規表現:5mm、クラス:17mm、解析長:15mm、型キャスト:22mm) –

+1

ああ、私は '' + + strのための4回目のテストを追加しました。最も速い競争相手は、次の速いスピードを約50%上回り、最も遅いスピードを5倍上回った。 –

1

return str.replace(/^0+(.)/, '$1'));

すなわち:その単一文字で、(ゼロでない)任意の単一文字が続く先行ゼロの最大数を置き換えます。これは、1つの "0"を飲み込まないようにするために必要です。

関連する問題