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

capitalize the first letter of each word in a sentence

本文关键字:单词 句子      更新时间:2023-09-26

嘿,伙计,谁能帮我修改一下我的代码,让它完成文本中显示的任务,

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

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

其次,不要忘记添加数组的第一个元素,因为你的循环是从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"));

Here is fiddle:

http://jsfiddle.net/C78T3/

在该循环的第一次迭代中从整个函数中取出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;
}