Como remover o primeiro e o último caractere de uma string

161

Eu estou querendo saber como remover o primeiro e o último caractere de uma string em Javascript.

Meu URL está aparecendo /installers/e eu só quero installers.

Às vezes será /installers/services/e eu só preciso installers/services.

Então, não posso simplesmente tirar as barras /.

Amendoim
fonte
Estou tentando apenas tirar o primeiro e o último personagem disso. Estou apenas pegando o URL
Amendoim
Eu só me pergunto por que ninguém parece notar que cortar barras (como o texto indica) e remover incondicionalmente o primeiro e o último caractere de uma string (como a legenda indica) não é o mesmo. Mas explica a ampla gama de respostas abaixo.
JensG

Respostas:

359

Aqui está

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

console.log(result);

Ou você pode usar .slicecomo sugerido por Ankit Gupta

var yourString = "/installers/services/";

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

console.log(result);

Documentação para a fatia e substring .

Dieterg
fonte
6
Mas é o fim does not url com uma barra, vai demorar de 1 caráter
Martijn
7
@ Martijn isso responde exatamente a pergunta. Ninguém disse que você não quer tirar nada além de barra;). +1 de mim - o código deve dizer o que deve fazer, não como os exemplos de expressões regulares aqui.
Episodex
Mas se você mudar para outro servidor, a barra traling pode não estar lá (ou talvez você tenha configurado a alteração de propósito). Não downvoting, apenas apontando-o para fora :)
Martijn
A barra final é sempre vai estar lá, porque ele está apontando para o arquivo index.php ...
Peanut
131

Pode ser melhor usar uma fatia como:

string.slice(1, -1)
Ankit Gupta
fonte
14

Eu não acho que o jQuery tenha algo a ver com isso. De qualquer forma, tente o seguinte:

url = url.replace(/^\/|\/$/g, '');
folha
fonte
1
Parece o mais correto até agora. A única coisa, eu acrescentaria um quantificador, apenas no caso de: /^\/+|\/+$/g.
precisa
8

Você pode regexá-lo:

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

O regex explicou:
- Primeira barra opcional:, ^/?escapou -> ^\/?(o ^início da cadeia de caracteres)
- O tubo (|) pode ser lido como or
- - Do que a barra no final -> /?$, escapou -> \/?$(o$ fim da cadeia de caracteres )

Combinado, seria ^/?|/$sem escapar. Primeira barra opcional OU última barra opcional

Martijn
fonte
A coisa é é que eu não posso tirar a "/" porque às vezes eu vou precisar aqueles para separar as partes internas do url
Peanut
As barras internas não desaparecem. Eu vou editar e explicar o regex #
287
3
Eu acho que você precisa da bandeira global para fazer isso funcionar: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt
3

Você pode usar o substringmétodo

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

outra alternativa é o slicemétodo

Hessam
fonte
3

Você pode fazer algo assim:

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

Esse regex é uma maneira comum de ter o mesmo comportamento do trim função usada em muitos idiomas.

Uma possível implementação da função 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, '');
}

O que excluirá tudo /no início e no final da string. Ele lida com casos como///installers/services///

Você também pode simplesmente fazer:

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

usar .replace(/.*\/(\S+)\//img,"$1")

"/installers/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services

"/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
Victor Ribeiro da Silva Eloy
fonte
Isso não faz o que o OP pediu.
Emile Bergeron
1

se você precisar remover a primeira letra da corda

string.slice(1, 0)

e para remover a última letra

string.slice(0, -1)
Rizo
fonte
-3
url=url.substring(1,url.Length-1);

Dessa forma, você pode usar os diretórios se for como ... / ... / ... / ... etc.

Kuzgun
fonte
1
url.lengthnãourl.Length
Arthur