テキスト変換ツール①ー概要 で試行錯誤したところ。特にTypeScriptについて書きます。
パスカルケースにするメソッド
export function to_pascal_case(str: string): string {
let result = "";
get_sprit_space(str).map((element) => {
result += element.charAt(0).toUpperCase() + element.slice(1).toLowerCase();
});
return result;
}
パスカルケースは”MyMethod”のように、単語先頭だけ大文字が大文字で後は小文字にする命名規則です。C#ではクラス名やメソッド名などでよく使うが、JavaScriptではあまり使いません。
JavaScriptには先頭だけメソッドが標準にはないので追加しました。
element.charAt(0).toUpperCase() + element.slice(1).toLowerCase();
やり方は、1文字目をcharAt(0)で指定しtoUpperCase()で大文字に変換。2文字目以降をslice(1)で切り出してtoLowerCase()ですべて小文字に変換します。
スネークケースにするメソッド
/** 文字列をスネークケースに変換 snake_case */
export function to_snake_case(str: string): string {
let under_bar = "_";
if (has_zenkaku_space(str)) under_bar = "_";
let result = "";
get_sprit_space(str).map((element, index, array) => {
result += element.toLowerCase();
if (index < array.length - 1) {
result += under_bar;
}
});
return result;
}
スネークケースはmy_methodのように単語を小文字にして_(アンダーバー)でつなぐ命名規則。C#ではあまり使わないが、Javascriptではよく使います。
単語に分割して小文字に変換し_(アンダーバー)でつなぎます。
このメソッドでは全角は全角のアンダーバーで、半角は半角のアンダーバーでつなぎました。
has_zenkaku_space(str)はスペースを見て全角か半角か判定しました。
function has_zenkaku_space(str: string): boolean {
return str.includes(" ");
}
get_sprit_space(str)では全角スペースか半角スペースで切り出して配列に格納しました。
function get_sprit_space(str: string): Array<String> {
let array = new Array();
if (has_zenkaku_space(str)) {
array = str.split(" ");
} else {
array = str.split(" ");
}
return array;
}
.map((element, index, array) => {}
いちばん最後はアンダーバーをつけないので、最後を判断する必要があります。mapはArrayの要素を順番に処理することができますが、index(要素の番号)、array(配列全体)を引数にすることもできます。
if (index < array.length - 1) {
result += under_bar;
}
index < array.length – 1で最後の要素以外ということを判定し、アンダー場を追加しました。