2010-08-15 15 views
12

Ho un array pieno di stringhe, un valore può essere ad esempio "non aggiornato per> giorni". Uso i valori nell'array per creare alcuni URL e devo rimuovere/\ <> e altri caratteri URL non validi. Come faccio a farlo più facilmente?Rimuovere i caratteri URL errati con JavaScript

Ho iniziato 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? 

Grazie in anticipo.

risposta

39

Se si desidera mantenere i simboli nel URI, ma codificarli:

encodedURI = encodeURIComponent(crappyURI); 

Se si desidera costruire URI 'amici', come quelli sui blog:

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

+1 per mostrare entrambe le alternative –

+1

Voglio solo rimuoverli, come con .replace ("/", ""), ma mi chiedevo se c'è un modo più semplice di avere un sacco di .replace() su ogni elemento in un array come nel mio primo esempio. – Peter

+3

Basta raggruppare tutti i simboli per uccidere in uno: '.replace (/ [simboli errati qui]/g, '')' –

2

È possibile utilizzare la funzione encodeURIComponent che correttamente codificherà l'URL del valore.

+0

L'unico modo per andare. (a meno che il desiderio dell'OP non sia quello di rimuovere effettivamente i personaggi incriminati per costruire URL di bell'aspetto). –

1

Hai dato un'occhiata a encodeURIComponent?

Esempio di utilizzo

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" 
Problemi correlati