2012-03-29 9 views
55

Voglio rimuovere la parte "www." dall'inizio di una stringa URLRimuovere la stringa su l'inizio di un URL

Per esempio in questi casi di test:

esempio www.test.comtest.com
ad es. www.testwww.comtestwww.com
ad es. testwww.comtestwww.com (se non esiste)

Devo usare Regexp o c'è una funzione intelligente?

risposta

117

Dipende che cosa avete bisogno, avete un paio di scelte, si può fare:

// this will replace the first occurrence of "www." and return "testwww.com" 
"www.testwww.com".replace("www.", ""); 

// this will slice the first four characters and return "testwww.com" 
"www.testwww.com".slice(4); 

// this will replace the www. only if it is at the beginning 
"www.testwww.com".replace(/^(www\.)/,""); 
+10

probabilmente l'ultima è la soluzione ottimale. – Christoph

+1

NON è la soluzione ottimale. Creare un regexp per rimuovere una sottostringa è un eccesso! – berezovskyi

+1

@berezovskiy dipende da cosa stai facendo, se ad esempio stai facendo un gioco in cui la performance è la chiave che hai ragione, nella maggior parte dei casi IMO è molto meglio essere espliciti e non introdurre un bug per un minimo perf hit. Tuttavia, la risposta fornisce 3 diversi esempi tra cui scegliere. – NicoSantangelo

8

Se la stringa ha sempre lo stesso formato, è sufficiente un semplice substr().

var newString = originalStrint.substr(4) 
+3

'testwww. com' → 'twww.com' = FAIL – Christoph

+0

@Christoph Ya, dal modo in cui ha modificato la sua domanda dopo la mia risposta, ecco perché ho menzionato ** se la stringa ha sempre lo stesso formato **. – talnicolas

+9

@Christoph e sarebbe "' testwww.com' → 'www.com' = FAIL" – talnicolas

0

provare il seguente

var original = 'www.test.com'; 
var stripped = original.substring(4); 
0

È possibile tagliare l'URL e utilizzare la risposta. sendredirect (nuovo URL), questo ti porterà alla stessa pagina con il nuovo url

3

O manualmente, come

var str = "www.test.com", 
    rmv = "www."; 

str = str.slice(str.indexOf(rmv) + rmv.length); 

o semplicemente usare .replace():

str = str.replace(rmv, ''); 
+0

Mi piace l'approccio manuale, poiché le stringhe possono provenire da variabili senza il rischio di incasinare le regex. – nha

4

Sì, c'è un RegExp ma non hanno bisogno di usarlo o qualsiasi funzione "intelligente":

var url = "www.testwww.com"; 
var PREFIX = "www."; 
if (url.indexOf(PREFIX) == 0) { 
    // PREFIX is exactly at the beginning 
    url = url.slice(PREFIX.length); 
} 
Problemi correlati