入力された文字列を文字列をチェーンケース・スネークケース・アッパーキャメルケース・ローワーキャメルケースに変換する関数を作成せよ
ただし、チェーンケース・スネークケースに関しては、大文字は小文字に変換されるものとする。(Aaa_Bbbとはしない)
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