在JavaScript中用下划线替换空格?

时间:2009-01-13 22:07:30

标签: javascript string

我正在尝试使用此代码用_替换空格,它适用于字符串中的第一个空格,但所有其他空格实例保持不变。有谁知道为什么?

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}

10 个答案:

答案 0 :(得分:597)

尝试.replace(/ /g,"_");

编辑:或.split(' ').join('_')如果您厌恶REs

编辑John Resig said

  

如果您正在搜索和更换   通过带有静态搜索的字符串   和静态替换它更快   执行动作   .split(“match”)。join(“replace”) -   这似乎违反直觉,但它   设法在大多数情况下以这种方式工作   现代浏览器。 (有变化   采取措施大幅提高   性能.replace(/ match / g,   “替换”)在下一个版本中   Firefox - 所以之前的声明   不久就不会这样了。)

答案 1 :(得分:60)

试试这个:

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

那将进行全局查找/替换

javascript replace

答案 2 :(得分:52)

回答Prasanna的问题:

  

如何替换多个空格   Javascript中的单个空格?

您将使用具有不同正则表达式的相同函数replace。空格的表达式为\s,“1次或更多次”的表达式为+加号,因此您只需将Adam的答案替换为以下内容:

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

答案 3 :(得分:20)

你可以试试这个

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

它甚至可以用单个' - '替换多个空格。

答案 4 :(得分:17)

我为它创建了JS性能测试http://jsperf.com/split-and-join-vs-replace2

答案 5 :(得分:10)

空格替换为下划线

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

输出:How_are_you

答案 6 :(得分:4)

我知道这已经过时但我没有看到有人提到扩展字符串prototype

String.prototype.replaceAll = function(search, replace){
    if(!search || !replace){return this;} //if search entry or replace entry empty return the string
    return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all.
};

答案 7 :(得分:1)

var text ='Hello World';

new_text = text.replace('','_');

console.log(new_text);

答案 8 :(得分:0)

const updateKey = key => console.log(key.split(' ').join('_'));
updateKey('Hello World');

答案 9 :(得分:0)

替换所有出现的

您要做的是将标题中的所有空格替换为 _。但是,当您将 replace 方法与字符串匹配(在您的情况下为第一个参数“”)一起使用时,它只会找到并替换第一个匹配项。检查 replace method。 要替换所有匹配,您可以使用以下 3 种方法:

  1. 在替换方法中使用带有全局标志的正则表达式 - 当您将 replace 方法与带有 /g 标志的正则表达式一起使用时,它会替换所有 匹配字符串中的匹配项。

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(/ /g,"_");
    $("#url_key").val(key);
}
// Show case
let title = "Your document title";
console.log(title.replace(/ /g,"_"));

  1. 使用 replaceAll method - replaceAll 方法将删除所有带下划线的空格。 (必须使用全局标志 使用正则表达式时)

function updateKey()
{
    var key=$("#title").val();
    key=key.replaceAll(/ /g,"_");
    // key=key.replaceAll(" ","_"); also valid
    $("#url_key").val(key);
}
// Show case
let title = "Your document title";
console.log(title.replaceAll(/ /g,"_"));

  1. 结合使用 splitjoin 方法 - 在空格处拆分字符串,并在连接中使用 _ 作为分隔符连接它 方法。

function updateKey()
{
    var key=$("#title").val();
    key=key.split(" ").join("_");
    $("#url_key").val(key);
}
// Show case
let title = "Your document title";
console.log(title.split(" ").join("_"));