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.