Как удалить часть строки?


Ответы:


147

Мой любимый способ сделать это - «разделить и выскочить»:

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

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

split () разбивает строку на массив строк, используя указанную строку-разделитель.
pop () удаляет последний элемент из массива и возвращает этот элемент.


25
Программист на C во мне съеживается от количества объектов, созданных и уничтоженных этой простой операцией split / pop :) Возможно: массив, две строки, другой массив, другая строка.
Gui13

11
@xgbi: да, у разработчиков на JavaScript и C довольно разные философии ;-)
Энди Э

3
Вы можете добавить к своему ответу возможность использования, alert(str.split("_")[1]);поскольку .splitсоздает массив с двумя элементами, [0]находящимися до "_"и [1]после. На самом деле это было то, что я искал, но ваш ответ помог мне добраться ^^
Фернандо Силва

1
@FernandoSilva Тогда, скажем, если бы было два "_" или больше, мы бы получили бы массив из 3 элементов и могли бы использовать / удалить и третий, верно? Кстати, +1. Именно то, что я искал.
Светлая Сабрикс

@TheLightSabrix посмотрите, как это работает, это намного проще, чем пытаться объяснить это в тексте. jsbin.com/keleguzacu/edit?js,console
Фернандо Силва,

42

Предполагая, что ваша строка всегда начинается с 'test_':

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

5
что, если это не начинается с теста?
NullVoxPopuli

используйте replace, но это не сработает, если есть несколько случаев. str.replace ("test_", ""); вернет новую строку, в которой все вхождения "test_" удалены, поэтому, если гарантировано только одно вхождение, все должно быть в порядке. Однако, если их несколько, я бы использовал str = str.substring (0, str.indexOf ("test_)" + str.substring (str.indexOf ("test_") + 5, str.length); я знаю это - старый пост, но, если кто-нибудь наткнется на него, может где-то помочь хотя бы одному человеку.
Джордж Ксавьер,

23

Если вы хотите удалить часть строки

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

Если вы хотите заменить часть строки

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


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

Это работает даже, если в строке нет подчеркивания. Попробуйте на http://jsbin.com/


4
У этого меньше накладных расходов, но больше кода, чем у Энди Э. Оба работают, но я предпочитаю этот метод.
palswim

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

Я думаю, что replace делает то же самое, как некоторая собственная функция. Для меня это работает.


Ответы только на код почти всегда можно улучшить, добавив некоторые объяснения того, как и почему они работают. Форматирование важно.
Джейсон Аллер,

По крайней мере, он работает в отличие от тех, что наверху, также с заменой.

0

Я хотел удалить "www."из href, поэтому сделал следующее:

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

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

// https://example.com/path
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.