Replacing spaces with underscores in JavaScript?

Replacing spaces with underscores in JavaScript?

I’m trying to use this code to replace spaces with _, it works for the first space in the string but all the other instances of spaces remain unchanged. Anybody know why?
function updateKey()
{
var key=$(“#title”).val();
key=key.replace(” “,”_”);
$(“#url_key”).val(key);
}

Solutions/Answers:

Solution 1:

Try .replace(/ /g,"_");

Edit: or .split(' ').join('_') if you have an aversion to REs

Edit: John Resig said:

If you’re searching and replacing
through a string with a static search
and a static replace it’s faster to
perform the action with
.split(“match”).join(“replace”) –
which seems counter-intuitive but it
manages to work that way in most
modern browsers. (There are changes
going in place to grossly improve the
performance of .replace(/match/g,
“replace”) in the next version of
Firefox – so the previous statement
won’t be the case for long.)

Solution 2:

try this:

key=key.replace(/ /g,"_");

that’ll do a global find/replace

javascript replace

Solution 3:

To answer Prasanna’s question below:

How do you replace multiple spaces by
single space in Javascript ?

You would use the same function replace with a different regular expression. The expression for whitespace is \s and the expression for “1 or more times” is + the plus sign, so you’d just replace Adam’s answer with the following:

key=key.replace(/\s+/g,"_");

Solution 4:

You can try this

 var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');

It will even replace multiple spaces with single ‘-‘.

Solution 5:

I created JS performance test for it http://jsperf.com/split-and-join-vs-replace2

Solution 6:

Replace spaces with underscore

var str = 'How are you';
var replaced = str.split(' ').join('_');

Output: How_are_you