繁体   English   中英

将句子中每个单词的首字母大写

[英]capitalize the first letter of each word in a sentence

嗨,有人可以帮我修复我的代码,以便它完成文本中显示的任务,

function tad(strg) {
    var char = strg.split('-')
    for (var i = 1; i < char.length; i++) {
        return char[i].charAt(0).toUpperCase() + char[i].slice(1)
    }
}

camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'

假设您想将所有带有连字符的单词组合替换为驼峰式的单词。 您可以将带有String.replace的正则表达式与回调函数一起使用,该回调函数将连字符后的所有单词都大写。

function camelize (strg) {
  return strg.replace(/-(\w)/g, function (match) {
     return match[1].toUpperCase();
  });
} 

camelize("background-color");
// backgroundColor

camelize("z-index");
// zIndex

camelize("list-style-image");
// listStyleImage 

JSFIDDLE

像波纹管一样改变你的功能

function tad(strg) {
    var char = strg.split('-')
    for (var i = 1; i < char.length; i++) {
        char[i] = char[i].charAt(0).toUpperCase() + char[i].slice(1)
    }
    return char.join('');
}

您将在循环完成迭代之前返回。 最好的办法是像这样使用Array.prototype.reduce

function tad(strg) {
    return strg.split('-').reduce(function(result, currentStr) {
        return result + currentStr.charAt(0).toUpperCase() + currentStr.slice(1);
    }, "");
}

console.log(tad("background-color") === "backgroundColor");
# true
console.log(tad("list-style-image") === "listStyleImage");
# true

return在该循环的第一次迭代中从整个函数中return 相反,您想对每个零件执行此操作,然后将零件连接在一起:

function camelize(string) {
    return string.split('-').map(function(part, i) {
        return i ? part.charAt(0).toUpperCase() + part.slice(1) : part;
    }).join("");
}
// or
function camelize(string) {
    return string.split('-').reduce(function(m, part) {
        return m + part.charAt(0).toUpperCase() + part.slice(1);
    });
}
// or
function camelize(string) {
    var parts = string.split('-'),
        result = ""
    for (var i = 1; i < parts.length; i++) {
        result += parts[i].charAt(0).toUpperCase() + parts[i].slice(1)
    }
    return result;
}

首先,您应该将结果连接到某个变量中,而不是循环返回。

其次,不要忘记添加array的第一个元素,因为循环是从1开始的。

function camelize(strg) {
    var char = strg.split('-'), result = char[0]
    for (var i = 1; i < char.length; i++) {
         result += char[i].charAt(0).toUpperCase() + char[i].slice(1)
    }
    return result
}

alert(camelize("background-color"));
alert(camelize("list-style-image"));

这是小提琴:

http://jsfiddle.net/C78T3/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM