Cách xóa “px” khỏi 245px


Câu trả lời:


182

Để chuyển đổi 245pxtrong 245 chỉ cần chạy:

parseInt('245px', 10);

Nó chỉ giữ lại các số đứng đầu và loại bỏ tất cả phần còn lại.


7
Đây là cách dễ dát mỏng nhất, nhưng bạn nên luôn luôn xác định radixparseInt('245px', 10)
Justin Johnson

Bạn nói đúng: mặc định (lạ) là bát phân khi chuỗi bắt đầu bằng '0' ... Tôi đã gặp lỗi bao nhiêu lần parseInt('09')rồi!
Don

4
bạn làm gì khi giá trị giống như 35.5px.. đang tạm dừng phân tích cú pháp Không sẽ chỉ dẫn đến 35
Muhammad Umer

5
@MuhammadUmer: bạn có thể sử dụng 'parseFloat' ( w3schools.com/jsref/jsref_parsefloat.asp )
Don

38

sử dụng

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

trong đó 10 là cơ số xác định parseIntđang phân tích cú pháp thành giá trị thập phân

sử dụng parseInt nhưng không sử dụng parseInt mà không có cơ số

Hàm parseInt () phân tích cú pháp một chuỗi và trả về một số nguyên.

Chữ ký là parseInt(string, radix)

Đối số thứ hai buộc parseInt sử dụng hệ thống đánh số cơ sở mười.

  • Loại đầu vào mặc định cho ParseInt () là thập phân (cơ số 10).
  • Nếu số bắt đầu bằng "0", nó được giả định là số bát phân (cơ số 8).
  • Nếu nó bắt đầu bằng "0x", nó được giả định là hệ thập lục phân

tại sao? if $ (this) .attr ('num') sẽ là "08" parsInt không có cơ số sẽ trở thành 0


19

Để chuyển đổi giá trị pixel không có "px" ở cuối. sử dụng parseFloat.

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

Lưu ý: Nếu bạn sử dụng parseInt, giá trị sẽ đúng nếu giá trị là số nguyên. Nếu giá trị là một số thập phân như 245,50px, thì giá trị sẽ được làm tròn thành 245.


Vì chỉnh sửa của tôi để tạo độ chính xác đã bị từ chối, tôi sẽ đưa điều này vào bình luận, parseFloat()không tính cơ số như parseInt()(Xem developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… & stackoverflow.com/ câu hỏi / 8555649 /… )
Wax

16

Điều này thực hiện chính xác những gì bạn yêu cầu: xóa hai ký tự cuối cùng của một chuỗi:

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

5

Đáng ngạc nhiên, phương thức chuỗi con s.substr(0, s.length-2);thực sự nhanh hơn một chút để loại bỏ px(vâng, nó trông không sạch sẽ và nếu có khoảng trống, nó sẽ vẫn còn - "250px" -> "250"vs"250 px" -> "250 " ).

Nếu bạn muốn tính đến khoảng trắng (mà bạn có thể nên) thì việc sử dụng .trim()hàm sẽ thực sự làm chậm quá trình substrkiểm tra đến mứcparseInt phương pháp thực sự trở nên vượt trội hơn.

Một lợi ích bổ sung của việc sử dụng parseInt(s, 10) là bạn cũng nhận được một chuyển đổi kiểu và ngay lập tức có thể bắt đầu áp dụng nó cho các hàm toán học.

Vì vậy, cuối cùng, nó thực sự phụ thuộc vào những gì bạn định làm với kết quả.

  • Nếu nó chỉ hiển thị, thì sử dụng substrphương pháp mà không dấu cắt có lẽ sẽ là lựa chọn tốt nhất của bạn.
  • Nếu bạn chỉ đang cố gắng xem liệu giá trị không có px có giống với một giá trị khác hay không s.substr(0, s.length-2) == 0, thì substrtốt nhất là sử dụng phương pháp này, như"250 " == 250 (ngay cả với khoảng trắng) sẽ dẫn đếntrue
  • Nếu bạn muốn tính đến khả năng có một khoảng trắng, hãy thêm nó vào một giá trị khác hoặc để tính toán điều gì đó với nó, thì bạn có thể muốn xem xét việc đi theo parseIntlộ trình.

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

Các bài kiểm tra trên jspref chiếm một khoảng trắng. Tôi cũng đã thử một s.split('px')[0]s.replace(/ *px/g, '')chức năng, cả hai đều thấy chậm hơn.

Vui lòng thêm các trường hợp thử nghiệm bổ sung.


1

Mặc dù parseInt () là một lựa chọn tốt nhưng vẫn tốt nếu có nhiều giải pháp khác

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


0

Tôi thích: "245px".replace(/px/,'')*1

vì nó không bao quanh đầu vào.

Ngoài ra, *1là để truyền nó thành int.


0

substr()bây giờ là một tính năng di sản ; sử dụng substring()thay thế: (cú pháp giống nhau trong trường hợp này )

str.substring(0, str.length-2);

Hoặc, sử dụng slice():

str.slice(0, -2);

slice()trông gọn gàng hơn nhiều, IMO. Giá trị âm tính từ cuối.


Tuy nhiên, nó tạo ra một hàm ít định giá hơn, vì nó không thể được sử dụng cho remcác giá trị.
Alan Shortis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.