Câu hỏi JavaScript cắt / cắt / cắt bỏ ký tự cuối cùng trong chuỗi


Tôi có một chuỗi, 12345.00và tôi muốn nó trở lại 12345.0.

Tôi đã xem xét trim, nhưng có vẻ như nó chỉ cắt tỉa khoảng trắng và slice mà tôi không thấy làm thế nào điều này sẽ làm việc. Bất kỳ đề xuất?


1485
2018-06-04 20:31


gốc


Bạn có quan tâm đến việc làm tròn không? 12345.46 = 12345.5 hoặc 12345.4? - RSolberg
Bạn có biết hậu tố là gì hay bạn muốn chia nhỏ và loại bỏ từ cuối cùng dựa trên dấu gạch dưới của bạn? - Cᴏʀʏ
Ho ho ho, @RSolberg: bạn không thể tròn một chuỗi! - Ziggy
@ Ziggy nói gì? Math.round('0.5') === 1 ;) - TWiStErRob
@ TWiStErRob Oh JavaScript, tôi sẽ làm gì với bạn? *lắc đầu* - Chuck Le Butt


Các câu trả lời:


Bạn có thể dùng chuỗi con chức năng:

var str = "12345.00";
str = str.substring(0, str.length - 1); // "12345.0"

Đây là câu trả lời được chấp nhận, nhưng theo các cuộc hội thoại dưới đây, lát cắt cú pháp rõ ràng hơn nhiều:

var str = "12345.00";
str = str.slice(0, -1); // "12345.0"

2463
2018-06-04 20:35



str.slice (0, - 1); cũng sẽ hoạt động :) - Khodor
@Kheu - ký hiệu cắt lát sẽ sạch hơn nhiều với tôi. Trước đây tôi đã sử dụng phiên bản chuỗi con. Cảm ơn! - Matt Ball
tha thứ cho tôi nếu tôi sai nhưng bạn không cần phải gán giá trị str.substring cho str một lần nữa? Như str = str.substring(0, str.length -1); - Doug Molineux
Các slice & substring tất cả các phương thức đều giống nhau; ngoại trừ việc slice() chấp nhận chỉ mục phủ định, liên quan đến phần cuối của chuỗi, nhưng không phải là substring, nó ném out-of-bound lỗi - Amol M Kulkarni
chuỗi con là các tối ưu hóa vi mô điên rồ mà tôi không nghĩ bạn nên làm. Tối đa hóa cho khả năng đọc đầu tiên. Sau đó, tối ưu hóa quả treo thấp nếu cần. - Alfred


Bạn có thể dùng lát cắt! Bạn chỉ cần chắc chắn rằng bạn biết cách sử dụng nó. Số dương tương ứng với đầu, số âm có liên quan đến kết thúc.

js>"12345.00".slice(0,-1)
12345.0

1155
2018-06-04 21:41



So với giải pháp được chấp nhận, đây là cách thanh lịch hơn và có thể được sử dụng ngay cả với chuỗi được tạo động - Sameer
Hiệu suất cũng tương tự. jsperf.com/slice-vs-substring-trim-end - Chad von Nau
có chuyện gì vậy js>? Đây có phải là từ dòng lệnh? - Man Personson
Tôi sử dụng jsdb (jsdb.org) như là một vỏ kiểm tra nhanh. Rat khuyen khich. - Jason S
Tôi thích cách này vì nó bắt đầu với suy nghĩ của php về chức năng cơ bản, dễ nhớ và viết nhanh hơn. - pathfinder


Bạn có thể dùng chuỗi con phương thức đối tượng chuỗi JavaScript:

s = s.substring(0, s.length - 4)

Nó vô điều kiện xóa bốn ký tự cuối cùng khỏi chuỗi s.

Tuy nhiên, nếu bạn muốn có điều kiện xóa bốn ký tự cuối cùng, chỉ khi chúng là chính xác  _bar:

var re = /_bar$/;
s.replace(re, "");

248
2017-08-30 03:08



slice tốt hơn ở đây. s.slice(0, -4) - Tim Down
Cách khác: s.slice (0, - "_ bar" .length) (hữu dụng nếu không muốn mã hóa số ký tự) - Mahn
Tôi thích cái này vì anh ta cũng giúp đỡ để thay thế một kết thúc được chỉ định. - Mike Graf


Phương pháp dễ nhất là sử dụng slice phương thức của chuỗi, cho phép các vị trí phủ định (tương ứng với các offset từ cuối chuỗi):

var s = "your string";
var withoutLastFourChars = s.slice(0, -4);

Nếu bạn cần một cái gì đó tổng quát hơn để loại bỏ mọi thứ sau (và bao gồm) dấu gạch dưới cuối cùng, bạn có thể làm như sau (miễn là s được đảm bảo chứa ít nhất một dấu gạch dưới):

var s = "your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk == "your"

150
2017-08-30 10:15





Đối với một số như ví dụ của bạn, tôi khuyên bạn nên thực hiện việc này substring:

alert(parseFloat('12345.00').toFixed(1)); // 12345.0

Do lưu ý rằng điều này thực sự sẽ làm tròn số, mặc dù, mà tôi sẽ tưởng tượng là mong muốn nhưng có thể không:

alert(parseFloat('12345.46').toFixed(1)); // 12345.5

63
2018-06-04 20:42



+1 Đây là những gì OP cần, quên giả định sai rằng có các chuỗi được cắt. - naugtur
Nó không phải là một giả định sai lầm, OP nói về chuỗi. Yours là giả định sai vì OP không nói về số làm tròn. - Fernando


Sử dụng chức năng slice của JavaScript:

var string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here

Điều này có thể được sử dụng để loại bỏ '_bar' ở cuối chuỗi, bất kỳ độ dài nào.


19
2018-02-27 11:14





Cụm từ thông dụng là những gì bạn đang tìm kiếm:

var str = "foo_bar";
alert(str.replace(/_bar$/, ""));

13
2017-08-30 03:09



Giải pháp của bạn hoạt động, nhưng câu trả lời của Alex là toàn diện hơn. Vì vậy, tôi sẽ chấp nhận của mình. Cảm ơn! - Albert
Điều này giải quyết một vấn đề liên quan đến việc loại bỏ điều kiện hơn là cắt xén một cách mù quáng - Aaron


Làm thế nào về:

var myString = "12345.00";
myString.substring(0, myString.length - 1);

8
2018-06-04 20:38





"a string".match(/(.*).$/)[1] // => a strin

"a string".match(/(.*).$/) // returns ["a string", "a strin"]

"a string".match(/(.*).{2}$/)[1] // to get two chars off => a stri
  1. (. *), chụp bất kỳ ký tự nào nhiều lần
  2. ., khớp với ký tự cuối cùng, trong trường hợp này
  3. $, khớp với phần cuối của chuỗi

6
2017-12-28 04:38



Tôi thích điều này bởi vì mặc dù. Splice () bạn tìm thấy một cách để sử dụng một biểu thức chính quy. - QueueHammer


Sử dụng regex:

var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');

6
2017-07-29 04:58