Làm thế nào để loại bỏ một phần của một chuỗi?


Câu trả lời:


143

Cách yêu thích của tôi để làm điều này là "tách và bật":

var str = "test_23";
alert(str.split("_").pop());
// -> 23

var str2 = "adifferenttest_153";
alert(str2.split("_").pop());
// -> 153

split () chia một chuỗi thành một mảng chuỗi bằng cách sử dụng một chuỗi phân tách được chỉ định.
pop () xóa phần tử cuối cùng khỏi một mảng và trả về phần tử đó.


23
Lập trình viên C trong tôi co rúm người lại với số lượng đối tượng được tạo và phá hủy trên thao tác tách / bật đơn giản này :) Có thể là: một mảng, 2 chuỗi, một mảng khác, một chuỗi khác.
Gui 13

11
@xgbi: vâng, các nhà phát triển JavaScript và C có những triết lý khá khác nhau ;-)
Andy E

3
Bạn có thể thêm vào câu trả lời của mình khả năng sử dụng alert(str.split("_")[1]);.splittạo một mảng có hai phần tử, ở [0]trước "_"[1]sau. Đây thực sự là những gì tôi đang tìm kiếm, nhưng câu trả lời của bạn đã giúp tôi đạt được điều đó ^^
Fernando Silva

1
@FernandoSilva Sau đó, giả sử nếu có hai "_" trở lên, chúng ta sẽ nhận được mảng 3 mục và có thể sử dụng / xóa mảng thứ ba, phải không? BTW, +1. Chính xác những gì tôi đang tìm kiếm.
The Light Sabrix

@TheLightSabrix hãy xem nó hoạt động, nó dễ dàng hơn nhiều so với việc cố gắng giải thích nó bằng văn bản. jsbin.com/keleguzacu/edit?js,console
Fernando Silva

41

Giả sử chuỗi của bạn luôn bắt đầu bằng 'test_':

var str = 'test_23';
alert(str.substring('test_'.length));

5
điều gì sẽ xảy ra nếu nó không bắt đầu với thử nghiệm?
NullVoxPopuli

sử dụng thay thế nhưng điều đó không hoạt động nếu có nhiều lần xuất hiện. str.replace ("test_", ""); sẽ trả về một chuỗi mới trong đó tất cả các lần xuất hiện của "test_" đều bị loại bỏ, vì vậy nếu chỉ một lần xuất hiện được đảm bảo, thì nó sẽ ổn. Tuy nhiên, nếu có nhiều, tôi sẽ sử dụng str = str.substring (0, str.indexOf ("test_)" + str.substring (str.indexOf ("test_") + 5, str.length); Tôi biết điều này là một bài đăng cũ nhưng, nếu ai đó xem qua nó, có thể giúp ít nhất một người ở đâu đó ở đó.
George Xavier

22

Nếu bạn muốn loại bỏ một phần của chuỗi

let str = "test_23";
str.replace("test_", "");
// 23

Nếu bạn muốn thay thế một phần của chuỗi

let str = "test_23";
str.replace("test_", "student-");
// student-23


9
string = "test_1234";
alert(string.substring(string.indexOf('_')+1));

Nó thậm chí hoạt động nếu chuỗi không có gạch dưới. Hãy thử nó tại http://jsbin.com/


4
Điều này có ít chi phí hơn, nhưng nhiều mã hơn câu trả lời của Andy E. Cả hai đều hoạt động, nhưng tôi thích phương pháp này hơn.
palswim

1
string = "removeTHISplease";
result = string.replace('THIS','');

Tôi nghĩ rằng thay thế làm điều tương tự như một số chức năng riêng. Đối với tôi điều này hoạt động.


Các câu trả lời chỉ có mã hầu như luôn có thể được cải thiện bằng cách bổ sung một số giải thích về cách thức và lý do tại sao chúng hoạt động. Định dạng là quan trọng.
Jason Aller

Ít nhất nó hoạt động không giống như những cái trên ontop cũng sử dụng thay thế.
TroyD

0

Tôi muốn xóa "www."khỏi a href nên tôi đã làm như sau:

const str = "https://www.example.com/path";

str.split("www.").join("");

// https://example.com/path
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.