Як видалити частину рядка?


Відповіді:


147

Мій улюблений спосіб зробити це "розщеплення і вискакування":

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

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

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


25
Програміст на моїй мові переймається кількістю об’єктів, створених та знищених за допомогою цієї простої операції спліт / поп :) Можливо: масив, 2 рядки, інший масив, інший рядок.
Gui13

11
@xgbi: так, розробники JavaScript та C мають досить різну філософію ;-)
Енді Е

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

1
@FernandoSilva Тоді, скажімо, якщо було два "_" або більше, ми отримали б 3 масиву елементів і змогли б використовувати / видалити і третій, так? До речі, +1. Саме те, що я шукав.
The Light Sabrix

@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','');

Я думаю, що заміна робить те саме, як якусь власну функцію. Для мене це працює.


Відповіді лише на коди майже завжди можна покращити, додавши якесь пояснення того, як і чому вони працюють. Форматування важливо.
Джейсон Аллер,

Принаймні, це працює на відміну від тих, що на вершині, також використовуючи заміну.

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.