npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

leyserplus-moji

v1.2.0

Published

半角全角変換・特定文字抽出など日本語を便利に扱うJavaScriptライブラリ。

Downloads

9

Readme

Moji.js npm version

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 moji
const 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(),
// => bc

toString()

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