// ==UserScript==
// @namespace http://tampermonkey.net/
// @exclude *
// ==UserLibrary==
// @author Eskey Easy
// @name 日本語文字種変換
// @description ひらがな、カタカナ、半角カタカナの相互変換
// @license MIT
// @version 0.1
// @grant none
// ==/UserScript==
// ==/UserLibrary==
/**
*
* @param {string} str ひらがな
* @returns 全角カナ
* @see https://qiita.com/mimoe/items/855c112625d39b066c9a
*/
function hiraToKana(str) {
return str.replace(/[\u3041-\u3096]/g, function (match) {
var chr = match.charCodeAt(0) + 0x60;
return String.fromCharCode(chr);
});
}
/**
*
* @param {string} str 全角カナ
* @returns ひらがな
* @see https://qiita.com/mimoe/items/855c112625d39b066c9a
*/
function kanaToHira(str) {
return str.replace(/[\u30a1-\u30f6]/g, function (match) {
var chr = match.charCodeAt(0) - 0x60;
return String.fromCharCode(chr);
});
}
/**
*
* @param {string} str 全角カナ
* @returns 半角カナ
* @see https://www.yoheim.net/blog.php?q=20191101
*/
function zenkana2Hankana(str) {
var kanaMap = {
ガ: 'ガ',
ギ: 'ギ',
グ: 'グ',
ゲ: 'ゲ',
ゴ: 'ゴ',
ザ: 'ザ',
ジ: 'ジ',
ズ: 'ズ',
ゼ: 'ゼ',
ゾ: 'ゾ',
ダ: 'ダ',
ヂ: 'ヂ',
ヅ: 'ヅ',
デ: 'デ',
ド: 'ド',
バ: 'バ',
ビ: 'ビ',
ブ: 'ブ',
ベ: 'ベ',
ボ: 'ボ',
パ: 'パ',
ピ: 'ピ',
プ: 'プ',
ペ: 'ペ',
ポ: 'ポ',
ヴ: 'ヴ',
ヷ: 'ヷ',
ヺ: 'ヺ',
ア: 'ア',
イ: 'イ',
ウ: 'ウ',
エ: 'エ',
オ: 'オ',
カ: 'カ',
キ: 'キ',
ク: 'ク',
ケ: 'ケ',
コ: 'コ',
サ: 'サ',
シ: 'シ',
ス: 'ス',
セ: 'セ',
ソ: 'ソ',
タ: 'タ',
チ: 'チ',
ツ: 'ツ',
テ: 'テ',
ト: 'ト',
ナ: 'ナ',
ニ: 'ニ',
ヌ: 'ヌ',
ネ: 'ネ',
ノ: 'ノ',
ハ: 'ハ',
ヒ: 'ヒ',
フ: 'フ',
ヘ: 'ヘ',
ホ: 'ホ',
マ: 'マ',
ミ: 'ミ',
ム: 'ム',
メ: 'メ',
モ: 'モ',
ヤ: 'ヤ',
ユ: 'ユ',
ヨ: 'ヨ',
ラ: 'ラ',
リ: 'リ',
ル: 'ル',
レ: 'レ',
ロ: 'ロ',
ワ: 'ワ',
ヲ: 'ヲ',
ン: 'ン',
ァ: 'ァ',
ィ: 'ィ',
ゥ: 'ゥ',
ェ: 'ェ',
ォ: 'ォ',
ッ: 'ッ',
ャ: 'ャ',
ュ: 'ュ',
ョ: 'ョ',
'。': '。',
'、': '、',
ー: 'ー',
'「': '「',
'」': '」',
'・': '・',
};
var reg = new RegExp('(' + Object.keys(kanaMap).join('|') + ')', 'g');
return str
.replace(reg, function (match) {
return kanaMap[match];
})
.replace(/゛/g, '゙')
.replace(/゜/g, '゚');
}
/**
*
* @param {string} str 半角カナ
* @returns 全角カナ
* @see https://www.yoheim.net/blog.php?q=20191101
*/
function hankana2Zenkana(str) {
var kanaMap = {
ガ: 'ガ',
ギ: 'ギ',
グ: 'グ',
ゲ: 'ゲ',
ゴ: 'ゴ',
ザ: 'ザ',
ジ: 'ジ',
ズ: 'ズ',
ゼ: 'ゼ',
ゾ: 'ゾ',
ダ: 'ダ',
ヂ: 'ヂ',
ヅ: 'ヅ',
デ: 'デ',
ド: 'ド',
バ: 'バ',
ビ: 'ビ',
ブ: 'ブ',
ベ: 'ベ',
ボ: 'ボ',
パ: 'パ',
ピ: 'ピ',
プ: 'プ',
ペ: 'ペ',
ポ: 'ポ',
ヴ: 'ヴ',
ヷ: 'ヷ',
ヺ: 'ヺ',
ア: 'ア',
イ: 'イ',
ウ: 'ウ',
エ: 'エ',
オ: 'オ',
カ: 'カ',
キ: 'キ',
ク: 'ク',
ケ: 'ケ',
コ: 'コ',
サ: 'サ',
シ: 'シ',
ス: 'ス',
セ: 'セ',
ソ: 'ソ',
タ: 'タ',
チ: 'チ',
ツ: 'ツ',
テ: 'テ',
ト: 'ト',
ナ: 'ナ',
ニ: 'ニ',
ヌ: 'ヌ',
ネ: 'ネ',
ノ: 'ノ',
ハ: 'ハ',
ヒ: 'ヒ',
フ: 'フ',
ヘ: 'ヘ',
ホ: 'ホ',
マ: 'マ',
ミ: 'ミ',
ム: 'ム',
メ: 'メ',
モ: 'モ',
ヤ: 'ヤ',
ユ: 'ユ',
ヨ: 'ヨ',
ラ: 'ラ',
リ: 'リ',
ル: 'ル',
レ: 'レ',
ロ: 'ロ',
ワ: 'ワ',
ヲ: 'ヲ',
ン: 'ン',
ァ: 'ァ',
ィ: 'ィ',
ゥ: 'ゥ',
ェ: 'ェ',
ォ: 'ォ',
ッ: 'ッ',
ャ: 'ャ',
ュ: 'ュ',
ョ: 'ョ',
'。': '。',
'、': '、',
ー: 'ー',
'「': '「',
'」': '」',
'・': '・',
};
var reg = new RegExp('(' + Object.keys(kanaMap).join('|') + ')', 'g');
return str
.replace(reg, function (match) {
return kanaMap[match];
})
.replace(/゙/g, '゛')
.replace(/゚/g, '゜');
}