神戸プログラミングアカデミーのブログ

「未経験から」「スキルアップ」「起業を目指す」無料で学べる神戸のプログラミング学校&学習コミュニティ

入力された文字列をチェーンケース・スネークケース・アッパーキャメルケース・ローワーキャメルケースに変換する関数を作成せよ

入力された文字列を文字列をチェーンケース・スネークケース・アッパーキャメルケース・ローワーキャメルケースに変換する関数を作成せよ

ただし、チェーンケース・スネークケースに関しては、大文字は小文字に変換されるものとする。(Aaa_Bbbとはしない)

qiita.com

function toChainCase(str){

}
function toSnakeCase(str){

}
function toUpperCamelCase(str){

}
function toLowerCamelCase(str){

}

const args = process.argv.slice(2);
for (let i = 0; i < args.length; i++) {
  const arg = args[i];
  console.log(toChainCase(arg));
  console.log(toSnakeCase(arg));
  console.log(toUpperCamelCase(arg));
  console.log(toLowerCamelCase(arg));
}
node main.js aaa-bbb-ccc AaaBbbCcc aaaBbbCcc aaa_bbb_ccc

出力結果

aaa-bbb-ccc
aaa_bbb_ccc
AaaBbbCcc
aaaBbbCcc
aaa-bbb-ccc
aaa_bbb_ccc
AaaBbbCcc
aaaBbbCcc
aaa-bbb-ccc
aaa_bbb_ccc
AaaBbbCcc
aaaBbbCcc
aaa-bbb-ccc
aaa_bbb_ccc
AaaBbbCcc
aaaBbbCcc

解答例

function splitWords(str) {
  let ret = str.split("-");
  if (ret.length === 1) {
    ret = str.split("_");
  }
  if (ret.length === 1) {
    ret = str.split("_");
  }
  if (ret.length === 1) {
    ret = [];
    let word = "";
    for (let i = 0; i < str.length; i++) {
      if (str[i].match(/[A-Z]/) && word.length > 0) {
        ret.push(word);
        word = "";
      }
      word += str[i];
    }
    ret.push(word);
  }
    // 一旦全部小文字に変換
  for (let i = 0; i < ret.length; i++) {
    ret[i] = ret[i].toLowerCase();
  }
  return ret;
}
function toChainCase(str) {
  const words = splitWords(str);
  return words.join("-");
}
function toSnakeCase(str) {
  const words = splitWords(str);
  return words.join("_");
}
function toUpperCamelCase(str) {
  const words = splitWords(str);
  for (let i = 0; i < words.length; i++) {
    words[i] = words[i][0].toUpperCase() + words[i].slice(1);
  }
  return words.join("");
}
function toLowerCamelCase(str) {
  const words = splitWords(str);
  for (let i = 1; i < words.length; i++) {
    words[i] = words[i][0].toUpperCase() + words[i].slice(1);
  }
  return words.join("");
}

const args = process.argv.slice(2);
for (let i = 0; i < args.length; i++) {
  const arg = args[i];
  console.log(toChainCase(arg));
  console.log(toSnakeCase(arg));
  console.log(toUpperCamelCase(arg));
  console.log(toLowerCamelCase(arg));
}

6ek068l4pw