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


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.