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

时间:2014-07-25 12:58:05

标签: javascript arrays capitalization

嘿家伙可以帮助我修复我的代码,以便它完成文本中显示的任务,

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'

5 个答案:

答案 0 :(得分:2)

假设您要将所有带有连字符的单词组合替换为驼峰式单词。您可以使用带有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

答案 1 :(得分:1)

改变你的功能,如下面的

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('');
}

答案 2 :(得分:0)

在循环完成迭代之前返回。这里最好的事情就是像这样使用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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

首先,你应该在一些变量中连接结果,而不是在循环中返回。

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