Jak usunąć część sznurka?

82

Powiedzmy, że mam test_23i chcę usunąć test_.

Jak mogę to zrobić?

Przedrostek _może ulec zmianie.

NullVoxPopuli
źródło
może powinieneś
rzucić

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.

Andy E.
źródło
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));
BoltClock
źródło
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
anonim
źródło
19

Myślę, że najłatwiejszy sposób to:

var s = yourString.replace(/.*_/g,"_");
Yassir Ennazk
źródło
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/

gawi
źródło
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.

Stefan Stanchev
źródło
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
Franco Méndez
źródło