lowerCamelCase,忽略字符串的第一个字母

时间:2018-04-08 16:07:48

标签: javascript string camelcasing

如果传递了true,则尝试创建一个返回UpperCamelCase的函数,如果为false则尝试返回lowerCamelCase

到目前为止,我已经确定了第一位,但无法弄清楚如何忽略字符串的第一个字母。我使用了charAt[0],但只返回第一个字符。

我已经看过these threads,但无法了解如何操作。

到目前为止,这是我的代码:

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:期待' ThisSentence'非常平等地对待这个问题'

对JS来说很新,有人可以帮忙吗?谢谢。

2 个答案:

答案 0 :(得分:1)

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

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));

答案 1 :(得分:1)

你可以只搜索空格和一个字符并根据布尔值替换。

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));