我试图使用这段代码用_替换空格,它适用于字符串中的第一个空格,但所有其他空格的实例保持不变。有人知道为什么吗?
function updateKey()
{
var key=$("#title").val();
key=key.replace(" ","_");
$("#url_key").val(key);
}
我试图使用这段代码用_替换空格,它适用于字符串中的第一个空格,但所有其他空格的实例保持不变。有人知道为什么吗?
function updateKey()
{
var key=$("#title").val();
key=key.replace(" ","_");
$("#url_key").val(key);
}
当前回答
我为它创建了JS性能测试http://jsperf.com/split-and-join-vs-replace2
其他回答
你可以试试这个
var str = 'hello world !!';
str = str.replace(/\s+/g, '-');
它甚至会用单个的“-”替换多个空格。
Try .replace(/ /g,"_");
编辑:或.split(' ').join('_')如果你不喜欢REs
编辑:John Resig说:
如果你在搜索和替换 通过一个字符串进行静态搜索 而一个静态替换它更快 使用 .split(“匹配”). join(“替换”) 这似乎违反直觉,但是 大多数情况下都是这样 现代浏览器。(有变化 在适当的地方大大改善 .replace(/match/g, “替换”)的下一个版本 Firefox -前面的陈述 这种情况不会持续太久。)
我为它创建了JS性能测试http://jsperf.com/split-and-join-vs-replace2
我知道这是旧的,但我没有看到任何人提到扩展字符串原型。
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.
};
$(function() {
$('#title').keyup(function() {
var value = $(this).val().toLowerCase();
$('#url_key').val(value.split(' ').join('_'));
}).keyup();
});
——或者你可以用:
$(function() {
$('#title').keyup(function() {
var value = $(this).val().toLowerCase();
$('#url_key').val(value.replace(/ /g,"_"));
}).keyup();
});