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

Ответы:

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));
BoltClock
источник
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
аноним
источник
19

Я думаю, что самый простой способ:

var s = yourString.replace(/.*_/g,"_");
Ясир Энназк
источник
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
Франко Мендес
источник