So entfernen Sie das erste und das letzte Zeichen einer Zeichenfolge

161

Ich frage mich, wie ich das erste und letzte Zeichen einer Zeichenfolge in Javascript entfernen kann.

Meine URL wird angezeigt /installers/und ich möchte nur installers.

Manchmal wird es so sein /installers/services/und ich brauche es einfach installers/services.

Ich kann also nicht einfach die Schrägstriche entfernen /.

Erdnuss
quelle
Ich versuche nur den ersten und letzten Charakter davon zu entfernen. Ich greife nur nach der URL
Peanut
Ich frage mich nur, warum niemand zu bemerken scheint, dass das Trimmen von Schrägstrichen (wie im Text angegeben) und das bedingungslose Entfernen des ersten und letzten Zeichens einer Zeichenfolge (wie in der Beschriftung angegeben) nicht ganz dasselbe ist. Aber es erklärt die breite Palette von Antworten unten.
JensG

Antworten:

359

Bitte schön

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

console.log(result);

Oder Sie können verwenden, .slicewie von Ankit Gupta vorgeschlagen

var yourString = "/installers/services/";

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

console.log(result);

Dokumentation für Slice und Teilstring .

Dieterg
quelle
6
Aber von der URL endet nicht mit einem Schrägstrich, es wird 1 Zeichen annehmen
Martijn
7
@ Martinijn dies beantwortet genau die Frage. Niemand hat gesagt, du willst nichts anderes als einen Schrägstrich ausziehen;). +1 von mir - Code sollte sagen, was er tun soll, nicht wie Regex-Beispiele hier.
Episodex
Wenn Sie jedoch auf einen anderen Server wechseln möchten, ist der Traling-Schrägstrich möglicherweise nicht vorhanden (oder Sie haben die Änderung absichtlich konfiguriert). Nicht abstimmen, nur darauf hinweisen :)
Martijn
Der nachfolgende Schrägstrich wird immer vorhanden sein, da er auf die Datei index.php verweist ...
Peanut
131

Es kann schöner sein, Slice zu verwenden wie:

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

Ich glaube nicht, dass jQuery etwas damit zu tun hat. Versuchen Sie auf jeden Fall Folgendes:

url = url.replace(/^\/|\/$/g, '');
Blatt
quelle
1
Dies scheint die bisher korrekteste zu sein. Das einzige, ich würde einen Quantifizierer hinzufügen, nur für den Fall : /^\/+|\/+$/g.
Georg
8

Sie könnten es neu formulieren:

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

Die Regex erklärte:
- Optionaler erster Schrägstrich : ^/?, Escape -> ^\/?(der ^mittlere Anfang der Zeichenfolge)
- Die Pipe (|) kann gelesen werden als or
- als der Options-Schrägstrich am Ende -> /?$, Escape -> \/?$(das $mittlere Ende der Zeichenfolge) )

Kombiniert wäre es ^/?|/$ohne zu entkommen. Optionaler erster Schrägstrich ODER optionaler letzter Schrägstrich

Martijn
quelle
Die Sache ist, dass ich das "/" nicht
Peanut
Die inneren Schrägstriche verschwinden nicht. Ich werde den Regex bearbeiten und erklären
Martijn
3
Ich denke, Sie brauchen die globale Flagge, damit dies funktioniert: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt
3

Sie können substringMethode verwenden

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

Eine andere Alternative ist die sliceMethode

Hessam
quelle
3

Sie können so etwas tun:

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

Diese Regex ist eine übliche Methode, um das gleiche Verhalten der trimin vielen Sprachen verwendeten Funktion zu erzielen.

Eine mögliche Implementierung der Trimmfunktion ist:

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

Dadurch werden alle /am Anfang und am Ende der Zeichenfolge gelöscht . Es behandelt Fälle wie///installers/services///

Sie können auch einfach tun:

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

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

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

"/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
Victor Ribeiro da Silva Eloy
quelle
Dies macht nicht das, wonach OP gefragt hat.
Emile Bergeron
1

Wenn Sie den ersten Buchstaben entfernen müssen

string.slice(1, 0)

und für Entfernen des letzten Buchstabens

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

Auf diese Weise können Sie die Verzeichnisse verwenden, wenn es wie ... / ... / ... / ... usw. ist.

Kuzgun
quelle
1
url.lengthnichturl.Length
Arthur