views:

585

answers:

2

Using JQuery, I'm extracting the value from what is essentially a query box for some data in a MySQL database. Knowing that most users will use an '*' (asterisk) as a wildcard value and that MySQL uses the '%' character, I want to convert any asterisks to '%'.

Normally, this would just be as simple as using

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

but I've had little success with that. Javascript's replace() function only replaces the first occurrence, so it's not replacing the last asterisk in something like *Foo*

The second option I tried was using a regular expression, which also didn't work:

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

How can I replace the '*' (asterisks) with a '%' (percent sign)? I'd imagine there's a really simple regular expression, or something I'm overlooking.

+3  A: 

Try:

queryString = inputText.replace(/\*/g, '%');
Roatin Marth
Excellent! This works. Thanks!
S Pangborn
+1  A: 

Splitting a string into an array and then joining it back into a string is faster than regular expression replacements:

queryString = inputText.split("*").join("%");
Ates Goral
I've never seen this approach, but I'll certainly do some of my own testing and try it out. Thanks!
S Pangborn
Interesting. Would need some benchmark, both on CPU and memory... Unless you do replacement on a large text, I doubt we see much speed gain.
PhiLho
Here's an explanation I found: http://stackoverflow.com/questions/441018/replacing-spaces-with-underscores-in-javascript/441035#441035
Roatin Marth