web-dev-qa-db-ja.com

245pxから「px」を削除する方法

文字列の最後の2文字を削除する簡単な方法は何ですか?

78
Tomkay

変換する 245px 245で実行するだけです:

parseInt('245px', 10);

先行番号のみを保持し、残りはすべて破棄します。

160
Dona

つかいます

_var size = parseInt('245px', 10);
_

ここで、10はradixであり、parseIntdecimal

parseIntを使用しますが、 radix なしでparseIntを使用しないでください

ParseInt()関数は文字列を解析し、整数を返します。

署名はparseInt(string, radix)です

2番目の引数は、parseIntにベース10の番号付けシステムを使用するように強制します。

  • ParseInt()のデフォルトの入力タイプは10進数(基数10)です。
  • 番号が「0」で始まる場合、8進数(基数8)と見なされます。
  • 「0x」で始まる場合、16進数と見なされます

どうして? $(this).attr( 'num')が「08」の場合、基数のないparsIntは0になります

34
Caspar Kleijne

これはまさにあなたが求めることをします:文字列の最後の2文字を削除します:

s.substr(0, s.length-2);
14
Jochem

最後に「px」なしでピクセル値を変換します。 parseFloatを使用します。

parseFloat('245px', 10);//returns 245

注:parseIntを使用する場合、値が整数の場合、値は正しくなります。値が245.50pxのような10進数の場合、値は245に丸められます

14
Foreever

驚くべきことに、部分文字列メソッドs.substr(0, s.length-2);は、実際にpxを削除するためにかなり高速です(そう、見た目はそれほどきれいではなく、スペースがある場合は残ります-_"250px" -> "250"_ vs _"250 px" -> "250 "_)。

スペースを考慮したい場合(おそらくそうする必要があります)、.trim()関数を使用すると、substrテストが実際に遅くなり、parseIntメソッドが実際に優れたものになります。

parseInt(s, 10)を使用することの追加の利点は、型変換も取得し、それをすぐに数学関数に適用できることです。

そのため、最終的には、結果をどう処理するかにかかっています。

  • 表示のみの場合は、substrメソッドwithoutを使用して、おそらくトリムが最善の策です。
  • Pxのない値が別の値s.substr(0, s.length-2) == 0と同じかどうかを確認しようとしている場合は、substrメソッドを使用することをお勧めします(_"250 " == 250_スペース)はtrueになります
  • スペースの可能性を考慮したり、別の値に追加したり、スペースを使用して何かを計算したりする場合は、parseIntルートを使用することを検討できます。

http://jsperf.com/remove-px-from-coord

Jsprefのテストはスペースを考慮します。 s.split('px')[0]およびs.replace(/ *px/g, '')関数も試しましたが、どちらも遅いことがわかりました。

テストケースを追加してください。

5
Kyle Shay

チェック http://www.w3schools.com/jsref/jsref_substr.asp あなたの場合は次のようになります

string.substr(0, string.length - 2)
0
brafales

私は好む:"245px".replace(/px/,'')*1

入力を囲んでいないためです。

また、*1は、intにキャストするためのものです。

0
bArmageddon