Package Exports
- @eai/moji
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@eai/moji) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Moji.js 
JavaScriptで、半角英数↔全角英数、半角カナ↔全角カナ、ひらがな↔カタカナ変換等をあつかうライブラリ
注意
githubはversion1になっていますが、npmはver0.5系のままですので、ご注意ください。 最終確認後、npmもversion1にあげます。
インストール
ブラウザ
<script src="/path/to/script/moji.js"></script>
<script>
$("hoge input")
.val(new Moji($("hoge input").val()).convert("ZE", "HE").toString());
</script>npm & require
//npm
npm i moji
// yarn
yarn add mojiconst moji = require("moji");使い方
###convert()
convert("変換種別)
- "ZEtoHE": 全角英数 => 半角英数
- "ZStoHS": 全角スペース => 半角スペース
- "HStoZS": 半角スペース => 全角スペースに
- "HEtoZE": 半角英数 => 全角英数
- "HGtoKK": ひらがな => カタカナ
- "KKtoHG": カタカナ => ひらがな
- "ZKtoHK": 全角カナ => 半角カナ
- "HKtoZK": 半角カナ => 全角カナ
/** 全角英数 => 半角英数 **/
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メソッド
string("標準メソッド名", [標準メソッド引数)
moji(" あ あ あ ").string("trim").convert("HG", "KK").toString(),
// => "ア ア ア"
moji("あああ").string("replace", "あああ", "いいい").convert("HG", "KK").toString(),
// => イイイ
moji("abcdefghij").string("substr", 1, 2).toString(),
// => bctoString()
toString()
基本的にメソッドはメソッドチェーンでつなぐ事を想定しているため、最後にtoStringで文字列を取得してください。
filter()
指定した文字種で絞込ます。
filter("絞り込みたい文字種")
/** ひらがなを絞込 **/
moji("abcあいうアイウ123").filter("HG").toString();
// => あいうreject()
指定した文字種を排除します。
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: 文字列の配列});例)
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