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


回答:


182

245px245で変換するには、次のコマンドを実行します。

parseInt('245px', 10);

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


7
これは最も順応性のある方法ですが、常に基数を指定する必要がありますparseInt('245px', 10)
Justin Johnson

その通りです。文字列が「0」で始まる場合、(奇妙な)デフォルトは8進数です...エラーが発生した回数parseInt('09')
ドン

4
値が35.5pxの場合はどうしますか。parseIntを使用すると35のみになります
Muhammad

5
@MuhammadUmer:「parseFloat」(w3schools.com/jsref/jsref_parsefloat.asp)を使用できます
ドン

38

使用する

var size = parseInt('245px', 10);

ここで、10は、10値に解析することを定義する基数です。parseInt

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

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

署名は parseInt(string, radix)

2番目の引数は、parseIntに基数10のナンバリングシステムを使用するように強制します。

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

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


19

末尾に「px」がないピクセル値を変換します。parseFloatを使用します。

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

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


精度を作るために私の編集が拒否されたとして、私は、コメントでこれを置くつもりだparseFloat()よう基数を取ることはありませんparseInt()(参照developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...stackoverflow.com/質問/ 8555649 /…
ワックス

16

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

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

5

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

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

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

したがって、最終的には、結果をどのように処理するかによって異なります。

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

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

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

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


1

parseInt()は良いオプションですが、それでも他の多くのソリューションがあるのは良いことです

var pixels = '245px';
Number(pixels.replace('px', ''));


0

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

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

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.