2010-12-19 1 views
5

正の整数より前にいくつかのゼロがあります。私は正の整数だけが残るようにゼロを削除したい。 '001'のように '1'だけになります。私は最も簡単な方法はparseInt( '001')を使うことだと思いました。しかし、私が発見したのは、数字8と9では機能しないということです。例parseInt( '008')は、 '8'ではなく '0'になります。ここでJavaScript関数parseInt()は先行0の数字を正しく解析しません。

は全体のhtmlコードです:

<html> <body> 
<script> 
var integer = parseInt('002'); 
document.write(integer); 

</script> 
</body> </html> 

しかし、私は何とかこの問題を報告することができますか?誰もがこの問題を解決する簡単な回避策を知っていますか?

+0

また、 'parseInt( '008')。toString()'を使用して先行ゼロを取り除くのは非常に厄介です。代わりに 'RegExp'を使用することを検討してください。 –

答えて

10

これは文書化された行動:彼らは八進数であるかのようにリードする「0」とhttp://www.w3schools.com/jsref/jsref_parseInt.asp

文字列が解析されます。

+2

MDNのドキュメントは一般にw3schoolsのものよりもはるかに高品質です。関連するMDNページはこちらです(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt)。 –

+1

関連:http://w3fools.com/ –

+0

[FireFox 21](https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/21)は[この機能を削除する]ことに不思議に思っています。 (https://bugzilla.mozilla.org/show_bug.cgi?id=786135)。 Chromeは明らかにそのようになっています。http://stackoverflow.com/questions/14542377 –

3

ゼロが前に付いた番号は、8進数として解析されます。

+2

これは[全体の話]ではありません(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Global_Objects/parseInt) - ブラウザとバージョンによって異なります。 –

15

あなたは数(基数)のベースを指定する必要が

parseInt('01', 10); 
+5

うん、JSLint(http://www.jslint.com/)のようなJSコード品質ツールは、あなたにそれについて頭を上げることができます:) –

1

これは実際にはバグではありません。従来の理由から、0から始まる文字列は8進数で解釈され、8進数では数字8はありません。これを回避するには、明示的に基数(つまりparseInt("008", 10))を渡す必要があります。

関連する問題