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

IT技术 javascript string
2021-01-25 16:57:27

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

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

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

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

编辑John Resig 说

如果您使用静态搜索和静态替换搜索和替换字符串,则使用 .split("match").join("replace") 执行操作会更快 - 这似乎违反直觉,但它设法工作在大多数现代浏览器中都是这样。(在下一个版本的 Firefox 中,有一些变化可以大大提高 .replace(/match/g, "replace") 的性能 - 所以之前的陈述不会持续很长时间。)

没有正则表达式有没有办法做到这一点?
2021-03-15 16:57:27
截至 2015 年,.replace(/ /g,"_");.split(' ').join('_').
2021-03-25 16:57:27
为什么回答的人没有使用 /\s/g ?
2021-03-26 16:57:27
浏览此@Inez 的未来人有一个链接来测试拆分/加入 VS 的两种速度。代替。截至 2018 年底,替换速度明显加快。
2021-03-26 16:57:27
而不是/ /g使用/\ /g- 两者都在 Javascript 中工作。后者也适用于 CoffeeScript。
2021-03-31 16:57:27

试试这个:

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

这将进行全局查找/替换

javascript 替换

漂亮的代码!!!做到了!!!
2021-04-06 16:57:27

在下面回答Prasanna的问题:

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

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

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

你可以试试这个

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

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

可能值得注意:这也去除了其他空白的制表符。
2021-03-19 16:57:27

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

现在看来更换是更好的整体选择
2021-03-22 16:57:27
一年多之后,在 Chrome 32.0.1700.107 中运行上述测试.. str.replace() 产生更好的结果(快 64%)
2021-03-27 16:57:27
凯夫——什么?尽管并非所有浏览器都是平等的,但平均而言拆分/加入要好得多。事实上,在很多现代浏览器中,这是一种更好的语气!感谢 Inez 进行设置!
2021-04-03 16:57:27