テキスト変換ツール②ー試行錯誤したこと

テキスト変換ツール①ー概要 で試行錯誤したところ。特に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で最後の要素以外ということを判定し、アンダー場を追加しました。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です