首页 > 解决方案 > 如果一个字符连续出现两次,是否可以只替换字符串中的一个字符?

问题描述

所以我做了一个方法,让任何字符串中所有单词的首字母大写。

String.prototype.toMyCase = function () {
    let strArray = Array.from(this.split(" "));
    for(let i=0; i<strArray.length; i++){
        strArray[i] = strArray[i][0].toUpperCase() + strArray[i].substr(1);
    }
    let newStr = strArray.toString();
    let finalStr = newStr.replace(/,/g, " ");
    return finalStr;
};

问题是当我传递一个具有真正逗号(,)的字符串时,它也会在 finalStr 步骤中替换该逗号(,)。例如
console.log("How can mirrors be real, if our eyes aren't real".toMyCase();给了我

如果我们的眼睛不真实,镜子怎么可能是真实的(真实之后有两个空格)。

标签: javascriptarraysstringreplace

解决方案


split()在 string ,大写第一个字符之后使用这个单行解决方案怎么样,然后使用第一个连接其余.map()的?,

let str = "How can mirrors be real, if our eyes aren't real";
let captialized_words = str => str.split(' ').map(w => w.substring(0, 1).toUpperCase() + w.substring(1)).join(' ')
console.log(captialized_words(str))


推荐阅读