2009-01-13 18 views
238

Estoy tratando de usar este código para reemplazar espacios con _, funciona para el primer espacio en la cadena pero todas las demás instancias de espacios permanecen sin cambios. ¿Alguien sabe por qué?¿Reemplazar espacios con guiones bajos en JavaScript?

function updateKey() 
{ 
    var key=$("#title").val(); 
    key=key.replace(" ","_"); 
    $("#url_key").val(key); 
} 

Respuesta

473

Trate .replace(/ /g,"_");

Edición: .split(' ').join('_') o si usted tiene una aversión a la res

Edición: John Resig said:

Si está buscando y reemplazando a través de una cadena con un fiador estático ch y una estática reemplazar es más rápido realizar la acción con .split ("partido") se unen ("reemplazar") -. que parece contrario a la intuición, pero las arregla para funcionar de esa manera en la mayoría de los navegadores modernos. (Hay cambios en marcha para mejorar enormemente el rendimiento de .place (/ match/g, "replace") en la próxima versión de Firefox - por lo que la declaración anterior no será el caso por mucho tiempo.)

+8

bah! ¡me ganaste por 58 segundos! ¡No debería haber agregado la clave = clave! lol – Adam

+0

Lo tenía en mi portapapeles de todos modos. Cuáles son las probabilidades. –

+1

¿Hay alguna manera de hacer esto sin la expresión regular? –

53

intente esto:

key=key.replace(/ /g,"_"); 

que va a hacer una búsqueda global/reemplazar

javascript replace

38

Para responder a la pregunta de Prasanna a continuación:

¿cómo reemplazar múltiples espacios por solo espacio en Javascript?

Utilizaría la misma función replace con una expresión regular diferente. La expresión para el espacio en blanco es \s y la expresión de "1 o más veces" es + el signo más, por lo que acababa de reemplazar la respuesta de Adán con lo siguiente:

key=key.replace(/\s+/g,"_"); 
14

creé prueba de rendimiento JS para que http://jsperf.com/split-and-join-vs-replace2

+1

Parece que hoy en día reemplazar es la mejor opción general – Houman

+0

Kave - ¿qué? Aunque no todos los navegadores son iguales, dividir/unir en promedio es mucho mejor. De hecho, en muchos navegadores modernos, ¡es un tono mejor! ¡Gracias Inez por configurar esto! –

+3

Un poco más de un año después y ejecutando la prueba anterior en Chrome 32.0.1700.107 ... str.replace() produce mejores resultados (64% más rápido) – jenovachild

14

puede probar este

var str = 'hello  world !!'; 
str = str.replace(/\s+/g, '-'); 

incluso va a reemplazar varios espacios con un solo '-'.

+0

Probablemente digno de mención: Esto también elimina las pestañas de otros espacios en blanco. –

4

Sé que esto es viejo, pero no vi a nadie mencionar la extensión de la Cadena prototype.

String.prototype.replaceAll = function(search, replace){ 
    if(!search || !replace){return this;} //if search entry or replace entry empty return the string 
    return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all. 
}; 
7

Reemplazar espacios con subrayado

var str = 'How are you'; 
var replaced = str.split(' ').join('_'); 

Salida: How_are_you

Cuestiones relacionadas