2009-10-02 7 views
9

En utilisant JQuery, j'extrais la valeur de ce qui est essentiellement une boîte de requête pour certaines données dans une base de données MySQL. Sachant que la plupart des utilisateurs utiliseront un '*' (astérisque) comme valeur générique et que MySQL utilise le caractère '%', je veux convertir n'importe quel astérisque en '%'.Comment remplacer un astérisque dans Javascript en utilisant replace()?

Normalement, ce serait juste être aussi simple que l'utilisation

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

mais j'ai eu peu de succès avec cela. fonction replace() de Javascript ne remplace que la première occurrence, il est donc ne pas remplacer le dernier astérisque dans quelque chose comme *Foo*

La deuxième option que j'ai essayé était une expression régulière, qui a également n'a pas fonctionné:

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

Comment puis-je remplacer le '*' (astérisques) par un '%' (signe de pourcentage)? J'imagine qu'il y a une expression régulière très simple, ou quelque chose que je néglige.

+0

En fait, ' "* Foo *". Remplacer (/ \ X2A/g, '%')' a travaillé pour moi. Quel était le problème avec celui-là? Ou quel navigateur a-t-il échoué? –

+0

Il est très possible que j'aurais pu bousiller quelque chose sur celui-là. Je viens de le tester à nouveau et ça marche - bizarre. Je suis en train de tester dans Firefox 3.5 nightlies (Shiretoko) et Epiphany (webkit). –

+0

En outre, il aurait pu être facilement quelque chose qui a été réparé dans la nuit la plus récente. J'aurais dû garder le vieux bâtiment pour tester. –

Répondre

19

Essayez:

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

Excellent! Cela marche. Merci! –

+0

Si simple, mais si difficile. Awesome :) – user2831723

3

découpant une chaîne dans un tableau, puis se joindre à nouveau dans une chaîne est plus rapide que le remplacement d'expression régulière:

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

Je n'ai jamais vu cette approche, mais je vais certainement faire mes propres tests et l'essayer. Merci! –

+0

Intéressant. J'aurais besoin d'un benchmark, à la fois sur le processeur et la mémoire ... Sauf si vous faites un remplacement sur un gros texte, je doute que nous voyons beaucoup de gain de vitesse. – PhiLho

+2

Voici une explication que j'ai trouvée: http://stackoverflow.com/questions/441018/replacing-spaces-with-underscores-in-javascript/441035#441035 –

0

Vous pouvez utiliser:

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

J'utilise cette fonction pour masquer certains chiffres d'un numéro de téléphone

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>

Questions connexes