Cli*_*ote 327 javascript string
我正在尝试使用此代码用_替换空格,它适用于字符串中的第一个空格,但所有其他空格实例保持不变.谁知道为什么?
function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}
Cre*_*esh 645
尝试 .replace(/ /g,"_"); 
编辑:或者.split(' ').join('_')如果你厌恶RE
编辑:John Resig说:
如果您正在搜索并通过静态搜索替换字符串并使用静态替换,则使用.split("匹配")执行操作的速度更快.join("replace") - 这看似违反直觉,但它设法工作这种方式在大多数现代浏览器中 (在下一版本的Firefox中,有一些变化可以大大提高.replace(/ match/g,"replace")的性能 - 所以之前的声明不会长久.)
Ric*_*ich 56
要回答下面Prasanna的问题:
如何在Javascript中用单个空格替换多个空格?
您将使用replace具有不同正则表达式的相同函数.空白\s的表达式是和"1次或更多次"的表达式是+加号,所以你只需用以下代码替换Adam的答案:
key=key.replace(/\s+/g,"_");
Fiz*_*han 25
你可以试试这个
 var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');
它甚至可以用单个' - '替换多个空格.
Ine*_*nez 17
我为它创建了JS性能测试http://jsperf.com/split-and-join-vs-replace2
Ars*_* KV 11
用下划线替换空格
var str = 'How are you';
var replaced = str.split(' ').join('_');
输出: How_are_you
发生这种情况是因为方法的设计方式是在您使用 string 查找匹配项时replace()仅替换第一次出现的情况。检查更换方法。
要替换所有匹配项,您可以使用以下 3 种方法:
replace():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:在空格处分割字符串,并在 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("_"));| 归档时间: | 
 | 
| 查看次数: | 424306 次 | 
| 最近记录: |