Як видалити перший і останній символ рядка


161

Мені цікаво, як видалити перший і останній символ рядка в Javascript.

Моя URL-адреса відображається, /installers/і я просто хочу installers.

Іноді це буде /installers/services/і мені просто потрібно installers/services.

Тому я не можу просто зняти косу рису /.


Я намагаюся просто зняти першого і останнього персонажа цього. Я просто захоплюю URL
арахіс

Мені просто цікаво, чому, здається, ніхто не помічає, що обрізання косої риски (як зазначено в тексті) та безумовного видалення першого та останнього знаку рядка (як вказує підпис) не зовсім однакове. Але це пояснює широкий спектр відповідей нижче.
JensG

Відповіді:


360

Ось ви йдете

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

console.log(result);

Або ви можете використовувати, .sliceяк запропонував Анкіт Гупта

var yourString = "/installers/services/";

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

console.log(result);

Документація на фрагмент та підрядку .


6
Але URL не закінчується косою рисою, вона займе 1 символу
Martijn

7
@Martijn це точно відповідає на питання. Ніхто не сказав, що ви не хочете знімати нічого, крім косої риски;). +1 від мене - код повинен говорити, що він повинен робити, а не як приклади регулярних виразів.
Episodex

Але якщо вам куди перейти на інший сервер, косою косою рисою може бути не там (або, можливо, ви змінили цілеспрямовано). Не зволікаючи, просто вказуючи на це :)
Martijn

Послідовна коса риса завжди буде там, оскільки вона вказує на файл index.php ...
Арахіс


14

Я не думаю, що jQuery не має нічого спільного з цим. У будь-якому випадку спробуйте наступне:

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

1
Це виглядає як найбільш правильне досі. Єдине, я б додати квантор, тільки в разі , якщо: /^\/+|\/+$/g.
georg

8

Ви можете його повторно виразити:

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

Режекс пояснив:
- Необов'язковий перший косий рядок :, ^/?уникнув -> ^\/?( ^засоби, що починаються з рядка)
- Трубу (|) можна прочитати як or
- ніж опцію прорізу в кінці -> /?$, уникнув -> \/?$( $означає кінець рядка )

У поєднанні це було б ^/?|/$без втечі. Необов’язковий перший косий косик АБО необов'язковий останній косий ривок


Річ у тім, що я не можу зняти "/", бо іноді мені знадобляться ті, щоб розділити внутрішні частини URL
арахіс

Внутрішня коса риса не відходить. Проредагую та пояснюю регулярний вираз
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.