2009-10-02 151 views
9

使用JQuery,我從本質上是MySQL數據庫中某些數據的查詢框中提取值。知道大多數用戶將使用'*'(星號)作爲通配符值,並且MySQL使用'%'字符,我想將任何星號轉換爲'%'。如何使用replace()替換Javascript中的星號?

通常情況下,這將僅僅是作爲使用

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

一樣簡單,但我已經與收效甚微。 JavaScript的replace()功能只替換第一次出現,所以它不是取代過去的星號類似*Foo*

我想第二個選項是使用正則表達式,也沒有工作:

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

如何我可以用'%'(百分號)替換'*'(星號)嗎?我會想象有一個非常簡單的正則表達式,或者我忽略的東西。

+0

事實上,' 「*富*」 代替(/ \ X2A /克, '%')'爲我工作。那個問題是什麼?或者哪個瀏覽器失敗了? – 2009-10-02 14:59:44

+0

我很可能會在這個問題上弄糟一些東西。我只是再次測試它,它工作 - 奇怪。我正在測試Firefox 3.5 Nightlies(Shiretoko)和Epiphany(webkit)。 – 2009-10-02 15:08:17

+0

此外,它可能很容易被修復在最新的夜晚。我應該保持舊的構建來測試。 – 2009-10-02 15:12:34

回答

19

嘗試:

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

非常棒!這工作。謝謝! – 2009-10-02 14:58:52

+0

這麼簡單,但很難。真棒:) – user2831723 2014-07-28 10:34:11

3

字符串分割爲一個數組,然後加入它放回一個字符串比正則表達式替換速度快:

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

我從來沒有見過這種方法,但我一定會做一些我自己的測試,並嘗試一下。謝謝! – 2009-10-02 15:04:39

+0

有趣。在CPU和內存上都需要一些基準測試...除非你在大文本上進行替換,否則我懷疑我們看到很多速度增益。 – PhiLho 2009-10-02 15:08:20

+2

下面是我找到的解釋:http://stackoverflow.com/questions/441018/replacing-spaces-with-underscores-in-javascript/441035#441035 – 2009-10-02 15:14:10

0

您可以使用:

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

我使用此功能隱藏電話號碼的一些數字

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>

相關問題