2010-08-15 24 views
12

Tengo una matriz llena de cadenas, un valor puede ser "no actualizado por> días". Utilizo los valores en la matriz para crear algunas url y necesito eliminar el/\ <> y otros caracteres URL ilegales. ¿Cómo puedo hacer esto más fácil?Eliminar caracteres URL ilegales con JavaScript

Empecé con

var Name0 = title[0].substring(1).replace(" ", "%20").replace("/", "") + '.aspx'; 
var Name1 = title[1].substring(1).replace(" ", "%20").replace("/", "") + '.aspx'; 
and so on but can I do this in a better way? 

Gracias de antemano.

Respuesta

39

Si desea mantener los símbolos en el URI, pero codificarlos:

encodedURI = encodeURIComponent(crappyURI); 

Si desea construir URI 'amigos' como los que en los blogs:

niceURI = crappyURI.replace(/[^a-zA-Z0-9-_]/g, ''); 
+2

+1 para mostrar ambas alternativas –

+1

Solo quiero eliminarlas, como con .replace ("/", ""), pero me preguntaba si hay una manera más fácil de tener muchas .replace() en cada elemento de una array como en mi primer ejemplo. – Peter

+3

Agrupe todos los símbolos para matar en uno: '.replace (/ [bad symbols here]/g, '')' –

2

Puede utilizar la función encodeURIComponent que codificará correctamente el valor de URL.

+0

El único camino a seguir. (a menos que el deseo del OP sea realmente eliminar los caracteres ofensivos para construir URL atractivas). –

1

¿Has echado un vistazo a encodeURIComponent?

Ejemplo de uso

var encoded = window.encodeURIComponent("http://stackoverflow.com/questions/3486625/remove-illegal-url-characters-with-javascript/3486631#3486631"); 

// encoded contains "http%3A%2F%2Fstackoverflow.com%2Fquestions%2F3486625%2Fremove-illegal-url-characters-with-javascript%2F3486631%233486631" 
Cuestiones relacionadas