Convert string to camel case


Description:


Complete the method/function so that it converts dash/underscore delimited words into camel casing. The first word within the output should be capitalized only if the original word was capitalized (known as Upper Camel Case, also often referred to as Pascal case).

Examples

"the-stealth-warrior"  gets converted to  "theStealthWarrior""The_Stealth_Warrior"  gets converted to  "TheStealthWarrior"

My solution:

function toCamelCase(str){
  let array = [];
  if(str.includes('-')) {
     array = str.split('-');
  }
  else if(str.includes('_')) {
    array = str.split('_');
  }
  else {
    array.push(str);
  }
  for(i=1;i<array.length;i++) {
    const key = array[i][0].toUpperCase();
    const arrayUpper = array[i].split('');
    arrayUpper[0] = key;
    array[i] = arrayUpper.join('');
  }
  array.join('');

  return array.join('');
}
コードから分かるように、私は以下のプロセスを経験しました.

  • 文字列に関連付けられたシンボルでグループ化して配列に保存
    ex) [the, stealth, warrior]

  • 配列内の各文字列で変更する文字列を配列に変換
    ex) 'stealth' → [s,t,e,a,l,t,h]

  • 配列の最初の文字を大文字に変更
    [s,t,e,a,l,t,h] → [S,t,e,a,l,t,h]

  • 配列を再結合します.
    [S,t,e,a,l,t,h] → 'Stealth'

  • アレイ全体を再結合し、アレイを文字列に変換
    [the,Stealth,Warrior] →'theStealthWarrior'
  • このような複雑な工事を経て、最大の原因は文字列が可変objectで、操作できないことです.したがって、配列に変更すると、文字列を返すプロセスが追加されます.

    Best solutions:

    function toCamelCase(str){
          var regExp=/[-_]\w/ig;
          return str.replace(regExp,function(match){
                return match.charAt(1).toUpperCase();
           });
    }

  • 正規表現役立つサイト

  • [-_]\w
    -文字で囲まれた和のいずれかを含む

  • ig
    case insensition&すべての関連コンテンツの検索

  • string.replace(regexp|substr, newSubstr|function)
    一致する部分またはすべての部分が置換された新しい文字列を返します.
    regexpを最初のパラメータとして与えると、上図に示すように、2番目のパラメータを関数のパラメータとすると、対応するregexpのパラメータが追加されます.gをフラグとして使用すると、一致するたびに関数が呼び出されます.

  • charAt(index)
    インデックス内の文字列を返します.