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

在JavaScript中用下划线替换空格?,javascript,string,Javascript,String,我试图用这段代码将空格替换为u,它适用于字符串中的第一个空格,但所有其他空格实例保持不变。有人知道为什么吗 function updateKey() { var key=$("#title").val(); key=key.replace(" ","_"); $("#url_key").val(key); } 尝试。替换(//g,“”) 编辑:或.split(“”)。如果您对REs有反感,请加入(“”) 编辑:: 如果您正在搜索和替换 通过字符串进行静态搜索 和一个静态

我试图用这段代码将空格替换为u,它适用于字符串中的第一个空格,但所有其他空格实例保持不变。有人知道为什么吗

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}
尝试
。替换(//g,“”)

编辑:或
.split(“”)。如果您对REs有反感,请加入(“”)

编辑::

如果您正在搜索和替换 通过字符串进行静态搜索 和一个静态替换它更快 使用以下命令执行操作: .拆分(“匹配”).加入(“替换”)- 这似乎有悖常理,但事实并非如此 大多数情况下都是这样 现代浏览器。(有变化 在适当的地方大大改善 .replace的性能(/match/g, 下一版本中的“替换”) Firefox-那么前面的声明 这种情况不会持续很久。)

试试这个:

key=key.replace(/ /g,"_");
这将进行全局查找/替换


回答普拉桑纳的以下问题:

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

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

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

我为它创建了JS性能测试

你可以试试这个

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

它甚至会用单个“-”替换多个空格。

我知道这很旧,但我没有看到任何人提到扩展字符串
原型

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.
};

将空格替换为下划线

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

输出:使用
替换
,您感觉如何
var text='Hello World';
新建文本=文本。替换(“”,“”);
console.log(新文本)
const updateKey=key=>console.log(key.split(“”).join(“”));
updateKey(“你好世界”)替换所有引用
您要做的是将标题中的所有空格都替换为u。但是当您使用带有字符串匹配的
replace
方法(本例中的第一个参数“”)时,它只查找并替换第一个匹配。检查一下。 要替换所有匹配项,可以使用以下3种方法:

  • 在replace方法中使用带有全局标志的regex-当您使用带有/g标志的regex的
    replace
    方法时,它将替换所有 匹配字符串中的匹配项
  • 函数updateKey()
    {
    var key=$(“#title”).val();
    key=key.replace(//g,“”);
    $(“#url_key”).val(key);
    }
    //展示柜
    让title=“您的文档标题”;
    
    console.log(title.replace(//g,“”)
    没有regexp有什么方法可以做到这一点吗?为什么回答的人没有使用/\s/g?而不是
    //g
    使用
    /\/g
    -两者都使用Javascript。后者也适用于CoffeeScript。截至2015年为
    。替换(//g,“”)
    .split('').join('')
    快。浏览这个@Inez的未来用户有一个链接,可以测试split/join和replace的速度。截至2018年底,更换速度明显加快。似乎现在更换是更好的总体选择Kave-什么?虽然并非所有浏览器都是相同的,但平均而言,拆分/连接要好得多。事实上,在许多现代浏览器中,这是一个更好的基调!感谢Inez的设置!一年多之后,现在在Chrome32.0.1700.107中运行上述测试。。str.replace()产生的结果要好得多(快64%),可能值得注意:这也会去除制表符和其他空格。你没有看到有人这样做,因为这是一个糟糕的主意。这将只替换第一个空格,而不是之后的空格