关于javascript:lowercamelcase,忽略字符串的第一个字母

lowerCamelCase, ignoring the first letter of string

尝试生成一个函数,如果传递true,则返回UpperCamelCase,如果传递false,则返回lowerCamelCase

到目前为止,我的第一个字还可以,但还不知道如何忽略字符串的第一个字母。我使用了charAt[0],但它只返回第一个字符。

我看过这些线,但不知道该怎么做。

这是迄今为止我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function sentenceToCamelCase(str, bool) {
  if (bool) {
    return str
      .toLowerCase()
      .split("")
      .map(w => w[0].toUpperCase() + w.substr(1))
      .join("");
  } else {
    return str
      .toLowerCase()
      .split("")
      .map(w => w[0].toUpperCase() + w.substr(1))
      .join("");
  }
}

我得到这个错误:

AssertionError: expected 'ThisSentence' to deeply equal 'thisSentence'

刚接触JS,有人能帮我一把吗?谢谢您。


您只需搜索空格和一个字符,然后根据布尔值进行替换。

1
2
3
4
5
6
7
function sentenceToCamelCase(str, bool) {
    var i = +bool;
    return str.replace(/(^|\s+)(.)/g, (_, __, s) => i++ ? s.toUpperCase(): s);
}

console.log(sentenceToCamelCase('once upon a time', true));
console.log(sentenceToCamelCase('once upon a time', false));


如果bool参数只应将输出的第一个字符更改为小写或大写,则可以使用下面的解决方案。如果这不是你要找的,请在评论中告诉我。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function sentenceToCamelCase(str, bool) {
  let res = str
      .toLowerCase()
      .split("")
      .map(w => w[0].toUpperCase() + w.substr(1))
      .join("");
  if(bool) {
    return res[0].toUpperCase() + res.substr(1);
  }
  else {
    return res[0].toLowerCase() + res.substr(1);
  }
}

console.log(sentenceToCamelCase("this sentence", true));
console.log(sentenceToCamelCase("this sentence", false));