この記事は 2021 年 09 月 08 日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOS のエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用している JavaScript で全角カタカナを半角カタカナに変換する方法についてです。
2. JavaScript で全角カタカナを半角カタカナに変換する
JavaScript で全角カタカナを半角カタカナに変換するには、以下の様な実装にします。
実行例
// 全角カタカナを半角カタカナに変換します。 // その他の文字はそのまま返却します。 function fullWidth2HalfWidthKana(src) { const kanaMap = { "ガ": "ガ", "ギ": "ギ", "グ": "グ", "ゲ": "ゲ", "ゴ": "ゴ", "ザ": "ザ", "ジ": "ジ", "ズ": "ズ", "ゼ": "ゼ", "ゾ": "ゾ", "ダ": "ダ", "ヂ": "ヂ", "ヅ": "ヅ", "デ": "デ", "ド": "ド", "バ": "バ", "ビ": "ビ", "ブ": "ブ", "ベ": "ベ", "ボ": "ボ", "パ": "パ", "ピ": "ピ", "プ": "プ", "ペ": "ペ", "ポ": "ポ", "ヴ": "ヴ", "ヷ": "ヷ", "ヺ": "ヺ", "ア": "ア", "イ": "イ", "ウ": "ウ", "エ": "エ", "オ": "オ", "カ": "カ", "キ": "キ", "ク": "ク", "ケ": "ケ", "コ": "コ", "サ": "サ", "シ": "シ", "ス": "ス", "セ": "セ", "ソ": "ソ", "タ": "タ", "チ": "チ", "ツ": "ツ", "テ": "テ", "ト": "ト", "ナ": "ナ", "ニ": "ニ", "ヌ": "ヌ", "ネ": "ネ", "ノ": "ノ", "ハ": "ハ", "ヒ": "ヒ", "フ": "フ", "ヘ": "ヘ", "ホ": "ホ", "マ": "マ", "ミ": "ミ", "ム": "ム", "メ": "メ", "モ": "モ", "ヤ": "ヤ", "ユ": "ユ", "ヨ": "ヨ", "ラ": "ラ", "リ": "リ", "ル": "ル", "レ": "レ", "ロ": "ロ", "ワ": "ワ", "ヲ": "ヲ", "ン": "ン", "ァ": "ァ", "ィ": "ィ", "ゥ": "ゥ", "ェ": "ェ", "ォ": "ォ", "ッ": "ッ", "ャ": "ャ", "ュ": "ュ", "ョ": "ョ", "。": "。", "、": "、", "ー": "ー", "「": "「", "」": "」", "・": "・" }; const regExp = new RegExp(`(${Object.keys(kanaMap).join("|")})`, "g"); return src .replace(regExp, function(match) { return kanaMap[match]; }) .replace(/゛/g, '゙') .replace(/゜/g, '゚'); } console.log(fullWidth2HalfWidthKana("ガギグゲゴ")); console.log(fullWidth2HalfWidthKana("ザジズゼゾ")); console.log(fullWidth2HalfWidthKana("ダヂヅゼゾ")); console.log(fullWidth2HalfWidthKana("バビブベボ")); console.log(fullWidth2HalfWidthKana("パピプペポ")); console.log(fullWidth2HalfWidthKana("ヴヷヺ")); console.log(fullWidth2HalfWidthKana("アイウエオ")); console.log(fullWidth2HalfWidthKana("カキクケコ")); console.log(fullWidth2HalfWidthKana("サシスセソ")); console.log(fullWidth2HalfWidthKana("タチツテト")); console.log(fullWidth2HalfWidthKana("ナニヌネノ")); console.log(fullWidth2HalfWidthKana("ハヒフヘホ")); console.log(fullWidth2HalfWidthKana("マミムメモ")); console.log(fullWidth2HalfWidthKana("ヤユヨ")); console.log(fullWidth2HalfWidthKana("ラリルレロ")); console.log(fullWidth2HalfWidthKana("ワヲン")); console.log(fullWidth2HalfWidthKana("ァィゥェォ")); console.log(fullWidth2HalfWidthKana("ッャュョ")); console.log(fullWidth2HalfWidthKana("。、ー「」・"));
実行結果
"ガギグゲゴ" "ザジズゼゾ" "ダヂヅゼゾ" "バビブベボ" "パピプペポ" "ヴヷヺ" "アイウエオ" "カキクケコ" "サシスセソ" "タチツテト" "ナニヌネノ" "ハヒフヘホ" "マミムメモ" "ヤユヨ" "ラリルレロ" "ワヲン" "ァィゥェォ" "ッャュョ" "。、ー「」・"
リファレンス
RegExpオブジェクト
Stringオブジェクト
replaceメソッド
参考サイト
[JavaScript] 全角⇔半角の変換を行う(英数字、カタカナ)
3. おわりに
前々回
前回
同様ですが、カタカナの場合正規表現での処理は難しいようです。
そのため変換マップを使用して変換します。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッド OS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOS モバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688