2009-10-02 37 views
9

Sử dụng JQuery, tôi trích xuất giá trị từ một hộp cơ bản cho một số dữ liệu trong cơ sở dữ liệu MySQL. Biết rằng hầu hết người dùng sẽ sử dụng dấu '*' (dấu hoa thị) làm giá trị ký tự đại diện và MySQL sử dụng ký tự '%', tôi muốn chuyển đổi bất kỳ dấu sao nào thành '%'.Làm cách nào để thay thế dấu sao trong Javascript bằng cách sử dụng replace()?

Thông thường, điều này sẽ chỉ đơn giản như sử dụng

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

nhưng tôi đã không mấy thành công với điều đó. replace() hàm Javascript của chỉ thay thế sự xuất hiện đầu tiên, vì vậy nó không thay thế các dấu hoa thị cuối cùng trong một cái gì đó giống như *Foo*

Lựa chọn thứ hai tôi đã cố gắng đã sử dụng một biểu thức chính quy, mà cũng không làm việc:

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

thế nào tôi có thể thay thế '*' (dấu hoa thị) bằng dấu '%' (dấu phần trăm) không? Tôi tưởng tượng có một biểu thức chính quy thực sự đơn giản, hoặc một cái gì đó tôi nhìn.

+0

Trên thực tế, ' "* Foo *". Replace (/ \ x2a/g, '%')' làm việc cho tôi. Vấn đề với cái đó là gì? Hay trình duyệt nào đã thất bại trong đó? –

+0

Rất có thể tôi đã có thể làm hỏng thứ gì đó. Tôi chỉ thử nghiệm nó một lần nữa và nó làm việc - kỳ lạ. Tôi đang thử nghiệm trong Firefox 3.5 nightlies (Shiretoko) và Epiphany (webkit). –

+0

Ngoài ra, nó có thể dễ dàng được một cái gì đó đã được cố định trong đêm mới nhất. Tôi cần phải giữ cho xây dựng cũ xung quanh để kiểm tra in –

Trả lời

19

Hãy thử:

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

Tuyệt vời! Những công việc này. Cảm ơn! –

+0

Rất đơn giản, nhưng rất khó. Tuyệt vời :) – user2831723

3

tách một chuỗi thành một mảng và sau đó gia nhập nó trở lại vào một chuỗi nhanh hơn thay thế biểu thức chính quy:

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

Tôi chưa bao giờ thấy cách tiếp cận này, nhưng tôi chắc chắn sẽ làm một số thử nghiệm của riêng tôi và thử nó. Cảm ơn! –

+0

Thú vị. Sẽ cần một số điểm chuẩn, cả trên CPU và bộ nhớ ... Trừ khi bạn thay thế trên một văn bản lớn, tôi nghi ngờ chúng ta thấy tăng tốc độ nhiều. – PhiLho

+2

Dưới đây là giải thích tôi đã tìm thấy: http://stackoverflow.com/questions/441018/replacing-spaces-with-underscores-in-javascript/441035#441035 –

0

Bạn có thể sử dụng:

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

Tôi sử dụng chức năng này để ẩn một số chữ số của một số điện thoại

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>

Các vấn đề liên quan