Có cách đơn giản nào để xóa hai ký tự cuối cùng của một chuỗi không?
Câu trả lời:
Để chuyển đổi 245px
trong 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.
parseInt('09')
rồi!
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
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.
tại sao? if $ (this) .attr ('num') sẽ là "08" parsInt không có cơ số sẽ trở thành 0
Để 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.
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 /… )
Đá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 substr
kiể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ả.
substr
phươ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.s.substr(0, s.length-2) == 0
, thì substr
tố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
parseInt
lộ 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]
và 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.
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', ''));
Kiểm tra http://www.w3schools.com/jsref/jsref_substr.asp Trong trường hợp của bạn sẽ giống như
string.substr(0, string.length - 2)
Tôi thích:
"245px".replace(/px/,'')*1
vì nó không bao quanh đầu vào.
Ngoài ra, *1
là để truyền nó thành int.
substr()
là 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.
rem
các giá trị.
parseInt('245px', 10)