Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用一个连字符替换单词之间的连续空格_Javascript_Regex - Fatal编程技术网

Javascript 用一个连字符替换单词之间的连续空格

Javascript 用一个连字符替换单词之间的连续空格,javascript,regex,Javascript,Regex,这个问题来自freecodecamp 填写urlslag函数,使其转换字符串title,并返回URL的连字符版本。您可以使用本节介绍的任何方法,但不要使用replace。以下是要求: 输入是一个带有空格和标题大小写单词的字符串 输出是一个字符串,单词之间的空格替换为 连字符(-) 输出应为所有小写字母 输出不应该有任何空格 现在我还无法解决如何从输出中去掉多余的连字符 我不应该使用replace您可以使用trim()和一个简单的正则表达式轻松完成此操作: var globalTitle=“冬天

这个问题来自freecodecamp

填写
urlslag
函数,使其转换字符串
title
,并返回URL的连字符版本。您可以使用本节介绍的任何方法,但不要使用
replace
。以下是要求:

输入是一个带有空格和标题大小写单词的字符串

输出是一个字符串,单词之间的空格替换为 连字符(
-

输出应为所有小写字母

输出不应该有任何空格

现在我还无法解决如何从输出中去掉多余的连字符

我不应该使用
replace

您可以使用
trim()
和一个简单的正则表达式轻松完成此操作:

var globalTitle=“冬天即将来临”;
var slug=globalTitle.trim();
控制台日志(slug)您可以使用
trim()
和一个简单的正则表达式轻松地完成此操作:

var globalTitle=“冬天即将来临”;
var slug=globalTitle.trim();

控制台日志(slug)我一直在研究它,到现在为止,还没有看到答案。 但我是这样解决的。可能效率低下

// the global variable
var globalTitle = "Winter Is Coming";
function urlSlug(title) {
let toArr = title.split("");
let newArr = toArr.map(a=> {
    if(a==" "){
        a= "-";
    }


    return a.toLowerCase();
} );
if(newArr[0] == "-"){
    newArr.splice(0,1);
}

for(let i=0;i<newArr.length;i++){
    if(newArr[i-1]=="-"&& newArr[i]=="-")
    {
        newArr.splice(i,1,"");
    }
}
let finalArr = newArr.join("");
return finalArr;

}

var winterComing = urlSlug(globalTitle); // Should be "winter-is-coming"
console.log(urlSlug(globalTitle));
//全局变量
var globalTitle=“冬天来了”;
函数urlSlug(标题){
让toArr=title.split(“”);
让newArr=toArr.map(a=>{
如果(a==“”){
a=“-”;
}
返回a.toLowerCase();
} );
如果(newArr[0]=“-”){
新角拼接(0,1);
}

因为(让i=0;i我一直在研究它,还没有看到答案。 但我是这样解决的,可能效率不高

// the global variable
var globalTitle = "Winter Is Coming";
function urlSlug(title) {
let toArr = title.split("");
let newArr = toArr.map(a=> {
    if(a==" "){
        a= "-";
    }


    return a.toLowerCase();
} );
if(newArr[0] == "-"){
    newArr.splice(0,1);
}

for(let i=0;i<newArr.length;i++){
    if(newArr[i-1]=="-"&& newArr[i]=="-")
    {
        newArr.splice(i,1,"");
    }
}
let finalArr = newArr.join("");
return finalArr;

}

var winterComing = urlSlug(globalTitle); // Should be "winter-is-coming"
console.log(urlSlug(globalTitle));
//全局变量
var globalTitle=“冬天来了”;
函数urlSlug(标题){
让toArr=title.split(“”);
让newArr=toArr.map(a=>{
如果(a==“”){
a=“-”;
}
返回a.toLowerCase();
} );
如果(newArr[0]=“-”){
新角拼接(0,1);
}

对于(设i=0;i另一个选项是继续您的
split()
想法,然后使用将数组的元素减少为单个输出:

var globalTitle=“冬天来了”;
函数urlSlug(标题){
let split=标题。拆分(“”);
返回拆分。减少((累加器、当前值、索引)=>{
如果(currentValue.length>0){
累加器+=currentValue.toLowerCase();
累加器+=(索引console.log(urlslaug(globalTitle));
另一个选项是继续您的
split()
思想,然后使用将数组元素减少为单个输出:

var globalTitle=“冬天来了”;
函数urlSlug(标题){
let split=标题。拆分(“”);
返回拆分。减少((累加器、当前值、索引)=>{
如果(currentValue.length>0){
累加器+=currentValue.toLowerCase();
累加器+=(索引