Come rimuovere il primo e l'ultimo carattere di una stringa


161

Mi chiedo come rimuovere il primo e l'ultimo carattere di una stringa in Javascript.

Il mio url sta mostrando /installers/e voglio solo installers.

A volte lo sarà /installers/services/e ne ho solo bisogno installers/services.

Quindi non posso semplicemente eliminare le barre /.


Sto cercando di eliminare solo il primo e l'ultimo personaggio. Sto solo prendendo l'URL
Peanut

Mi chiedo solo perché nessuno sembra notare che tagliare le barre (come indica il testo) e rimuovere incondizionatamente il primo e l'ultimo carattere di una stringa (come indica la didascalia) non è esattamente lo stesso. Ma spiega l'ampia gamma di risposte di seguito.
JensG,

Risposte:


360

Ecco qui

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

console.log(result);

Oppure puoi usare .slicecome suggerito da Ankit Gupta

var yourString = "/installers/services/";

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

console.log(result);

Documentazione per lo slice e la sottostringa .


6
Ma l'URL non termina con una barra, ci vorrà 1 personaggio
Martijn

7
@Martijn risponde esattamente alla domanda. Nessuno ha detto che non vuoi spogliare nient'altro che barra;). +1 da me - il codice dovrebbe dire cosa dovrebbe fare, non come esempi di regex qui.
Episodex,

Ma se dovessi spostarti su un altro server, la barra di valutazione potrebbe non essere presente (o forse hai configurato la modifica di proposito). Non effettuare il downvoting, ma solo evidenziarlo :)
Martijn,

La barra finale sarà sempre lì perché punta al file index.php ...
Peanut

131

Potrebbe essere più bello usare slice come:

string.slice(1, -1)

14

Non penso che jQuery abbia nulla a che fare con questo. Ad ogni modo, prova quanto segue:

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

1
Questo sembra il più corretto finora. L'unica cosa, mi piacerebbe aggiungere un quantificatore, nel caso in cui: /^\/+|\/+$/g.
Georg

8

Puoi regex:

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

Il regex ha spiegato:
- Prima barra opzionale:, con ^/?escape -> ^\/?(il ^mezzo indica l'inizio della stringa)
- La pipe (|) può essere letta come or
- Rispetto alla barra delle opzioni alla fine -> /?$, con escape -> \/?$( $significa fine della stringa )

Combinato sarebbe ^/?|/$senza scappare. Prima barra opzionale O ultima barra opzionale


Il fatto è che non riesco a rimuovere il "/" perché a volte ne avrò bisogno per separare le parti interne dell'url
Peanut

I tagli interni non vanno via. Ill modificare e spiegare il regex
Martijn

3
Penso che ti serva la bandiera globale per far funzionare tutto questo: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt,

3

Puoi usare il substringmetodo

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

un'altra alternativa è il slicemetodo


3

Puoi fare qualcosa del genere:

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

Questa regex è un modo comune per avere lo stesso comportamento della trimfunzione utilizzata in molte lingue.

Una possibile implementazione della funzione 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, '');
}

Che cancellerà tutto /all'inizio e alla fine della stringa. Gestisce casi come///installers/services///

Puoi anche semplicemente fare:

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

1

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

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

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

Questo non fa ciò che OP ha richiesto.
Emile Bergeron,

1

se è necessario rimuovere il primo leter di stringa

string.slice(1, 0)

e per rimuovere l'ultima lettera

string.slice(0, -1)

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

In questo modo puoi usare le directory se è come ... / ... / ... / ... ecc.


1
url.lengthnourl.Length
Arthur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.