2012-03-29 20 views
55

Quiero quitar la parte "www." desde el principio de una cadena URLRetire la cadena en el comienzo de una URL

Por ejemplo, en estos casos de prueba:

por ejemplo, www.test.comtest.com
p. www.testwww.comtestwww.com
p. testwww.comtestwww.com (si no existe)

¿Necesito usar Regexp o hay una función inteligente?

Respuesta

117

depende de lo que necesita, usted tiene un par de opciones, que puede hacer:

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

probablemente la última es la solución óptima. – Christoph

+1

NO es la solución óptima. ¡Crear una expresión regular para eliminar una subcadena es una exageración! – berezovskyi

+1

@berezovskiy depende de lo que esté haciendo, si, por ejemplo, está haciendo un juego donde el rendimiento es clave, tiene razón, en la mayoría de los casos IMO es mucho mejor para ser explícito y no introducir un error por un mínimo golpe de pene. No obstante, la respuesta proporciona 3 ejemplos diferentes para elegir. – NicoSantangelo

8

Si la cadena tiene siempre el mismo formato, un simple substr() debería ser suficiente.

var newString = originalStrint.substr(4) 
+3

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

+0

@Christoph Ya, por cierto editó su pregunta después de mi respuesta, es por eso que mencioné ** si la cadena siempre tiene el mismo formato **. – talnicolas

+9

@Christoph y sería "' testwww.com' → 'www.com' = FAIL" – talnicolas

0

intente lo siguiente

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

Puede cortar la url y utilizar la respuesta. sendredirect (nueva url), esto lo llevará a la misma página con la nueva url

3

O bien manualmente, como

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

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

o simplemente utilizar .replace():

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

Me gusta el enfoque manual, ya que las cadenas pueden venir de variable sin riesgo de estropear las expresiones regulares. – nha

4

Sí, no es una expresión regular, pero que no es necesario utilizarlo o cualquier función "inteligente":

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