Jak usunąć część sznurka?


Odpowiedzi:


147

Moim ulubionym sposobem jest „dzielenie i strzelanie”:

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

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

split () dzieli ciąg na tablicę ciągów przy użyciu określonego ciągu separatora.
pop () usuwa ostatni element z tablicy i zwraca ten element.


25
Programista C we mnie kuli się z powodu liczby obiektów utworzonych i zniszczonych podczas tej prostej operacji split / pop :) Prawdopodobnie: tablica, 2 string, inna tablica, inny napis.
Gui13

11
@xgbi: tak, programiści JavaScript i C mają jednak dość różne filozofie ;-)
Andy E

3
Możesz dodać do swojej odpowiedzi możliwość użycia, alert(str.split("_")[1]);ponieważ .splittworzy tablicę z dwoma elementami, [0]znajdującymi się przed "_"i [1]po. To było to, czego szukałem, ale Twoja odpowiedź pomogła mi się tam dostać ^^
Fernando Silva

1
@FernandoSilva Następnie powiedzmy, że gdyby były dwa „_” lub więcej, otrzymalibyśmy tablicę 3 elementów i moglibyśmy użyć / usunąć również trzecią, prawda? BTW, +1. Dokładnie to, czego szukałem.
The Light Sabrix,

@TheLightSabrix spójrz, jak działa, jest o wiele łatwiejsze niż próba wyjaśnienia tego w tekście. jsbin.com/keleguzacu/edit?js,console
Fernando Silva

42

Zakładając, że Twój ciąg zawsze zaczyna się od 'test_':

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

5
co jeśli nie zacznie się od testu?
NullVoxPopuli

użyj zamiany, ale to nie działa, jeśli występuje wiele wystąpień. str.replace ("test_", ""); zwróci nowy napis, w którym wszystkie wystąpienia "test_" są usunięte, więc jeśli tylko jedno wystąpienie jest gwarantowane, powinno być dobrze. Jeśli jednak jest ich wiele, użyłbym str = str.substring (0, str.indexOf ("test_)" + str.substring (str.indexOf ("test_") + 5, str.length); Wiem o tym to stary post, ale jeśli ktoś go
George Xavier

23

Jeśli chcesz usunąć część ciągu

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

Jeśli chcesz zamienić część ciągu

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


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

Działa nawet, jeśli ciąg nie ma podkreślenia. Wypróbuj na http://jsbin.com/


4
Ma to mniej narzutów, ale więcej kodu niż odpowiedź Andy'ego E. Obie działają, ale wolę tę metodę.
palswim

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

Myślę, że zamiana robi to samo, co jakaś własna funkcja. U mnie to działa.


Odpowiedzi zawierające tylko kod można prawie zawsze ulepszyć, dodając wyjaśnienia, jak i dlaczego działają. Formatowanie jest ważne.
Jason Aller

Przynajmniej działa inaczej niż te, które są na wierzchu, również przy użyciu zamiany.

0

Chciałem usunąć "www."z href, więc zrobiłem to:

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

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

// https://example.com/path
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.