半角全角変換ライブラリ
JavaScriptで、半角英数↔全角英数、半角カナ↔全角カナ、ひらがな↔カタカナ変換等をあつかうライブラリ
githubはversion1になっていますが、npmはver0.5系のままですので、ご注意ください。 最終確認後、npmもversion1にあげます。
//npm npm i moji// yarn yarn add moji
const moji = require("moji");
convert("変換種別)
/** 全角英数 => 半角英数 **/ moji("ABCD01234").convert("ZEtoHE").toString(); // => ABCD01234/** 半角英数 => 全角英数 **/ moji("ABCD01234").convert("HEtoZE").toString(); // => ABCD01234
/** 全角スペース => 全角スペース **/ moji(" ").convert("ZStoHS").toString(); // => " "
/** ひらがな => カタカナ **/ moji("あいうえお").convert("HGtoKK").toString(); // => アイウエオ
/** カタカナ => ひらがな **/ moji("アイウエオ").convert("KKtoHG").toString(); // => あいうえお
/** 全角カナ => 半角カナ **/ moji("アイウエオ").convert("ZKtoHK").toString(); // => アイウエオ
/** 半角カナ => 全角カナ **/ moji("アイウエオ").convert("HKtoZK").toString(), // => アイウエオ
メソッドチェーンでつないで変換
/** [半角カナ] => [全角カナ] => [ひらがな] **/ moji("アイウエオ").convert("HKtoZK").convert("KKtoHG").toString(); // => あいうえお
string("標準メソッド名", [標準メソッド引数)
moji(" あ あ あ ").string("trim").convert("HG", "KK").toString(), // => "ア ア ア"moji("あああ").string("replace", "あああ", "いいい").convert("HG", "KK").toString(), // => イイイ
moji("abcdefghij").string("substr", 1, 2).toString(), // => bc
toString()
基本的にメソッドはメソッドチェーンでつなぐ事を想定しているため、最後に
toStringで文字列を取得してください。
指定した文字種で絞込ます。
filter("絞り込みたい文字種")
/** ひらがなを絞込 **/ moji("abcあいうアイウ123").filter("HG").toString(); // => あいう
指定した文字種を排除します。
reject("排除したい文字種")
/** ひらがなを排除 **/ moji("abcあいうアイウ123").reject("HG").toString(); // => abcアイウ123
変換などに使う文字種です。 標準では以下の文字種が登録されています。
ZE: 全角英数 // スペース含まず
HE: 半角英数 // スペース含まず
HG: ひらがな
KK: カタカナ
ZS: 全角スペース
HS: 半角スペース
HK: 半角カタカナ
ZK: 全角カタカナ(半角カタカナとの変換用) ※ 半角カナは
ガギグゲゴの用に
パピプペポのように、濁点、半濁点が別文字列になるなどの特殊性があるため、半角カナ、全角カナ変換は特別に文字種を設定しています。
文字種は後から独自に追加する事が可能です。
追加例)
moji.addMojisyu("文字種名", {start: 開始文字コード, end: 終了文字コード}); moji.addMojisyu("文字種名", {regxp: 正規表現, list: 文字列の配列});
例)
javascript moji = require("Moji"); moji.addMojisyu({"ZE", {start:0xff01, end:0xff5e}}); // 全角英数 moji.addMojisyu({"HK", { regexp: /([\uff66-\uff9c]\uff9e)|([\uff8a-\uff8e]\uff9f)|([\uff61-\uff9f])/g, list: ["。", "「", "」"] }});
文字種は二つのパターンがあります。これは、文字列の中から該当文字種を検索して置換する方法に依存します。
全角英数や半角英数のように、文字コードが連続している場合に仕様します。
半角カナのように連続する文字列では変換できない場合などに利用します。 正規表現(rebexp)で範囲を指定して、その範囲内の文字列がlistにあるかチェックします。
これは、listだけで検索すると文字数に応じてパフォーマンスの劣化が予想されるためです。
この辺りはFHconvertを参考にさせて頂いています。
FHconverter.jsを多く参考させて頂いています。
MIT