Comment supprimer le premier et le dernier caractère d'une chaîne

161

Je me demande comment supprimer le premier et le dernier caractère d'une chaîne en Javascript.

Mon URL s'affiche /installers/et je veux juste installers.

Parfois ça le sera /installers/services/et j'en ai juste besoin installers/services.

Je ne peux donc pas simplement supprimer les barres obliques /.

Cacahuète
la source
J'essaie simplement d'enlever le premier et le dernier caractère de cela. Je saisis juste l'URL
Peanut
Je me demande simplement pourquoi personne ne semble remarquer que couper les barres obliques (comme l'indique le texte) et supprimer inconditionnellement le premier et le dernier caractère d'une chaîne (comme l'indique la légende) n'est pas tout à fait la même chose. Mais cela explique le large éventail de réponses ci-dessous.
JensG

Réponses:

360

Voici

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

console.log(result);

Ou vous pouvez utiliser .slicecomme suggéré par Ankit Gupta

var yourString = "/installers/services/";

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

console.log(result);

Documentation pour la tranche et la sous - chaîne .

Dieterg
la source
6
Mais de l'url ne se termine pas par une barre oblique, elle prendra 1 caractère
Martijn
7
@Martijn cela répond exactement à la question. Personne n'a dit que vous ne vouliez rien enlever d'autre que slash;). +1 de ma part - le code devrait dire ce qu'il est censé faire, pas comme les exemples de regex ici.
Episodex
Mais si vous vous déplacez vers un autre serveur, la barre oblique de vérification peut ne pas être là (ou peut-être avez-vous configuré le changement exprès). Pas de vote négatif, il suffit de le signaler :)
Martijn
La barre oblique de fin sera toujours là car elle pointe vers le fichier index.php ...
Peanut
131

Il peut être plus agréable d'utiliser une tranche comme:

string.slice(1, -1)
Ankit Gupta
la source
14

Je ne pense pas que jQuery ait quoi que ce soit à voir avec cela. Quoi qu'il en soit, essayez ce qui suit:

url = url.replace(/^\/|\/$/g, '');
feuille
la source
1
Cela semble être le plus correct à ce jour. La seule chose, je voudrais ajouter un quantificateur, juste au cas où: /^\/+|\/+$/g.
georg
8

Vous pouvez le regexer:

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

Le regex a expliqué:
- Première barre oblique facultative:, ^/?échappée -> ^\/?(le ^début de chaîne de caractères)
- Le tube (|) peut être lu comme or
- Que l'option barre oblique à la fin -> /?$, échappé -> \/?$(la $fin de chaîne signifie )

Combiné, ce serait ^/?|/$sans s'échapper. Première barre oblique facultative OU dernière barre oblique facultative

Martijn
la source
Le problème est que je ne peux pas supprimer le "/" parce que parfois j'en ai besoin pour séparer les parties internes de l'url
Peanut
Les barres obliques intérieures ne disparaissent pas. Je vais éditer et expliquer la regex
Martijn
3
Je pense que vous avez besoin du drapeau global pour que cela fonctionne: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt
3

Vous pouvez utiliser la substringméthode

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

une autre alternative est la sliceméthode

Hessam
la source
3

Vous pouvez faire quelque chose comme ça:

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

Cette expression régulière est une manière courante d'avoir le même comportement de la trimfonction utilisée dans de nombreuses langues.

Une implémentation possible de la fonction Trim est:

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

Ce qui supprimera tout /au début et à la fin de la chaîne. Il gère des cas comme///installers/services///

Vous pouvez aussi simplement faire:

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

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

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

"/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
Victor Ribeiro da Silva Eloy
la source
Cela ne fait pas ce que OP a demandé.
Emile Bergeron
1

si vous devez retirer le premier litre de ficelle

string.slice(1, 0)

et pour supprimer la dernière lettre

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

De cette façon, vous pouvez utiliser les répertoires si c'est comme ... / ... / ... / ... etc.

Kuzgun
la source
1
url.lengthnoturl.Length
Arthur