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