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 /.


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 .


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)

14

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

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

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


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


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);

1

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

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

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

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)

-3
url=url.substring(1,url.Length-1);

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


1
url.lengthnichturl.Length
Arthur
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.