2009-10-02 19 views
9

Usando JQuery, estoy extrayendo el valor de lo que es esencialmente un cuadro de consulta para algunos datos en una base de datos MySQL. Sabiendo que la mayoría de los usuarios usarán un '*' (asterisco) como valor comodín y que MySQL usa el carácter '%', quiero convertir cualquier asterisco en '%'.¿Cómo reemplazo un asterisco en Javascript usando replace()?

Normalmente, esto sólo sería tan simple como usar

queryString = inputText.replace('*', '%'); 

pero he tenido poco éxito con eso. La función de Javascript replace() sólo reemplaza la primera ocurrencia, así que no es la sustitución de la última asterisco en algo así como *Foo*

La segunda opción que probé fue el uso de una expresión regular, que tampoco funciona:

queryString = inputText.replace(/\x2a/g, '%'); 

Cómo ¿Puedo reemplazar el '*' (asteriscos) con un '%' (signo de porcentaje)? Me imagino que hay una expresión regular realmente simple, o algo que estoy pasando por alto.

+0

En realidad, ' "* * Foo". Reemplace (/ \ X2a/g, '%')' trabajó para mí. ¿Cuál fue el problema con eso? ¿O en qué navegador falló? –

+0

Es muy posible que haya estropeado algo en eso. Acabo de probarlo de nuevo y funciona, extraño. Estoy probando en Firefox 3.5 nightlies (Shiretoko) y Epiphany (webkit). –

+0

Además, podría haber sido fácilmente algo que se corrigió en la más nueva de todas las noches. Debería haber guardado el viejo build para probarlo. –

Respuesta

19

Probar:

queryString = inputText.replace(/\*/g, '%'); 
+0

¡Excelente! Esto funciona. ¡Gracias! –

+0

Tan simple, pero tan difícil. Awesome :) – user2831723

3

Separar una cadena en una matriz y luego unirse de nuevo en una cadena es más rápido que los reemplazos de expresiones regulares:

queryString = inputText.split("*").join("%"); 
+0

Nunca he visto este enfoque, pero ciertamente haré algunas de mis propias pruebas y las probaré. ¡Gracias! –

+0

Interesante. Necesitaría algún punto de referencia, tanto en la CPU como en la memoria ... A menos que haga un reemplazo en un texto grande, dudo que veamos mucha ganancia de velocidad. – PhiLho

+2

Aquí hay una explicación que encontré: http://stackoverflow.com/questions/441018/replacing-spaces-with-underscores-in-javascript/441035#441035 –

0

que puede utilizar:

queryString = inputText.replace(/[*]/g,""); 
0

Uso esta función para ocultar algunos dígitos de un número de teléfono

function replacePhoneNumbers(number){ 
 
    var cuantos = number.length; 
 
    var tele = []; 
 
    for (var i = 0; i < cuantos; i++) { 
 
     if(i < 7){ 
 
      tele[i] = number[i].replace(/^\d+$/, "*"); 
 
     } 
 
     else{ 
 
      tele[i] = number[i]; 
 
     } 
 
    } 
 
    
 
    var full_phone = ""; 
 
    for (var i = 0; i < cuantos; i++) { 
 
     full_phone += tele[i]; 
 
    } 
 
    return full_phone; 
 
    //return number; 
 
} 
 

 
var number = replacePhoneNumbers("7533930048"); 
 
document.getElementById("demo").innerHTML = number;
<p id="demo"></p>

Cuestiones relacionadas