我正在尝试使用此代码用_替换空格,它适用于字符串中的第一个空格,但所有其他空格实例保持不变。有谁知道为什么?
function updateKey()
{
var key=$("#title").val();
key=key.replace(" ","_");
$("#url_key").val(key);
}
答案 0 :(得分:597)
尝试.replace(/ /g,"_");
编辑:或.split(' ').join('_')
如果您厌恶REs
编辑:John Resig said:
如果您正在搜索和更换 通过带有静态搜索的字符串 和静态替换它更快 执行动作 .split(“match”)。join(“replace”) - 这似乎违反直觉,但它 设法在大多数情况下以这种方式工作 现代浏览器。 (有变化 采取措施大幅提高 性能.replace(/ match / g, “替换”)在下一个版本中 Firefox - 所以之前的声明 不久就不会这样了。)
答案 1 :(得分:60)
答案 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 种方法:
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,"_"));
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,"_"));
split
和 join
方法 - 在空格处拆分字符串,并在连接中使用 _ 作为分隔符连接它
方法。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("_"));