Как удалить первый и последний символ строки


161

Мне интересно, как удалить первый и последний символ строки в Javascript.

Мой URL показывает, /installers/и я просто хочу installers.

Иногда так будет /installers/services/и мне просто нужно installers/services.

Так что я не могу просто снять косую черту /.


Я пытаюсь просто раздеть первый и последний персонаж этого. Я просто перехватываю URL
— Peanut

Я просто удивляюсь, почему никто, кажется, не замечает, что урезание косой черты (как показывает текст) и безоговорочное удаление первого и последнего символа строки (как указывает заголовок) не совсем то же самое. Но это объясняет широкий спектр ответов ниже.
— JensG

Ответы:


360

Ну вот

var yourString = "/installers/";
var result = yourString.substring(1, yourString.length-1);

console.log(result);

Или вы можете использовать .sliceкак предложено Ankit Gupta

var yourString = "/installers/services/";

var result = yourString.slice(1,-1);

console.log(result);

Документация для среза и подстроки .


6
Но URL не заканчивается косой чертой, он займет 1 символ
— Martijn

7
@ Martijn это точно отвечает на вопрос. Никто не говорил, что ты не хочешь лишать ничего кроме слэша;). +1 от меня - код должен сказать, что он должен делать, а не как примеры регулярных выражений здесь.
— Episodex

Но если вам нужно перейти на другой сервер, косая черта может отсутствовать (или, может быть, вы настроили изменение преднамеренно). Не голосуя, просто указав на это :)
— Martijn

Конечная косая черта всегда будет там, потому что она указывает на файл index.php ...
— Peanut


14

Я не думаю, что jQuery имеет какое-либо отношение к этому. В любом случае, попробуйте следующее:

url = url.replace(/^\/|\/$/g, '');

1
Это выглядит как самый правильный на данный момент. Единственное, я бы добавить квантор, только в случае , если: /^\/+|\/+$/g.
— Георг

8

Вы можете проверить это:

"string".replace(/^\/?|\/?$/, "")
"/installers/services/".replace(/^\/?|\/?$/, "") // -> installers/services

Регулярное выражение объяснило:
- Необязательный первый слэш:, ^/?экранированный -> ^\/?( ^означает начало строки)
- Трубка (|) может быть прочитана как or
- Чем опциональный слэш в конце -> /?$, экранированный -> \/?$( $означает конец строки )

В сочетании это было бы ^/?|/$без побега. Необязательный первый слеш ИЛИ необязательный последний слэш


Дело в том, что я не могу убрать символ "/", потому что иногда мне понадобятся те, чтобы отделить внутренние части URL
— Peanut

Внутренние косые черты не уходят. Я отредактирую и объясню регулярное выражение
— Martijn

3
Я думаю, что вам нужен глобальный флаг, чтобы это работало: "/installers/services/".replace(/^\/?|\/?$/g," ")
— Мэтт Гонт

3

Вы можете использовать substringметод

s = s.substring(0, s.length - 1) //removes last character

другой альтернативой является sliceметод


3

Вы можете сделать что-то подобное:

"/installers/services/".replace(/^\/+/g,'').replace(/\/+$/g,'')

Это регулярное выражение является распространенным способом иметь такое же поведение trim функции, используемой во многих языках.

Возможная реализация функции обрезки:

function trim(string, char){
    if(!char) char = ' '; //space by default
    char = char.replace(/([()[{*+.$^\\|?])/g, '\\$1'); //escape char parameter if needed for regex syntax.
    var regex_1 = new RegExp("^" + char + "+", "g");
    var regex_2 = new RegExp(char + "+$", "g");
    return string.replace(regex_1, '').replace(regex_2, '');
}

Который удалит все /в начале и конце строки. Он обрабатывает случаи как///installers/services///

Вы также можете просто сделать:

"/installers/".substring(1, string.length-1);


1

если вам нужно удалить первый букву строки

string.slice(1, 0)

и для удаления последней буквы

string.slice(0, -1)

-3
url=url.substring(1,url.Length-1);

Таким образом, вы можете использовать каталоги, если они похожи на ... / ... / ... / ... и т. Д.


1
url.lengthнетurl.Length
— Артур
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.