/*
* Copyright (C) 2013-2017 NTT DATA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.terasoluna.gfw.common.fullhalf;
/**
* Convenient class holding an instance of {@link FullHalfConverter} with default mapping table. Default mapping rule is as
* follows:
* <table border=1>
* <caption>default mapping table</caption>
* <tr>
* <th>Fullwidth</th>
* <th>Halfwidth</th>
* </tr>
* <tr>
* <td>!</td>
* <td>!</td>
* </tr>
* <tr>
* <td>”</td>
* <td>"</td>
* </tr>
* <tr>
* <td>#</td>
* <td>#</td>
* </tr>
* <tr>
* <td>$</td>
* <td>$</td>
* </tr>
* <tr>
* <td>%</td>
* <td>%</td>
* </tr>
* <tr>
* <td>&</td>
* <td>&</td>
* </tr>
* <tr>
* <td>’</td>
* <td>'</td>
* </tr>
* <tr>
* <td>(</td>
* <td>(</td>
* </tr>
* <tr>
* <td>)</td>
* <td>)</td>
* </tr>
* <tr>
* <td>*</td>
* <td></td>
* </tr>
* <tr>
* <td>+</td>
* <td>+</td>
* </tr>
* <tr>
* <td>,</td>
* <td>,</td>
* </tr>
* <tr>
* <td>-</td>
* <td>-</td>
* </tr>
* <tr>
* <td>.</td>
* <td>.</td>
* </tr>
* <tr>
* <td>/</td>
* <td>/</td>
* </tr>
* <tr>
* <td>0</td>
* <td>0</td>
* </tr>
* <tr>
* <td>1</td>
* <td>1</td>
* </tr>
* <tr>
* <td>2</td>
* <td>2</td>
* </tr>
* <tr>
* <td>3</td>
* <td>3</td>
* </tr>
* <tr>
* <td>4</td>
* <td>4</td>
* </tr>
* <tr>
* <td>5</td>
* <td>5</td>
* </tr>
* <tr>
* <td>6</td>
* <td>6</td>
* </tr>
* <tr>
* <td>7</td>
* <td>7</td>
* </tr>
* <tr>
* <td>8</td>
* <td>8</td>
* </tr>
* <tr>
* <td>9</td>
* <td>9</td>
* </tr>
* <tr>
* <td>:</td>
* <td>:</td>
* </tr>
* <tr>
* <td>;</td>
* <td>;</td>
* </tr>
* <tr>
* <td><</td>
* <td><</td>
* </tr>
* <tr>
* <td>=</td>
* <td>=</td>
* </tr>
* <tr>
* <td>></td>
* <td>></td>
* </tr>
* <tr>
* <td>?</td>
* <td>?</td>
* </tr>
* <tr>
* <td>@</td>
* <td>@</td>
* </tr>
* <tr>
* <td>A</td>
* <td>A</td>
* </tr>
* <tr>
* <td>B</td>
* <td>B</td>
* </tr>
* <tr>
* <td>C</td>
* <td>C</td>
* </tr>
* <tr>
* <td>D</td>
* <td>D</td>
* </tr>
* <tr>
* <td>E</td>
* <td>E</td>
* </tr>
* <tr>
* <td>F</td>
* <td>F</td>
* </tr>
* <tr>
* <td>G</td>
* <td>G</td>
* </tr>
* <tr>
* <td>H</td>
* <td>H</td>
* </tr>
* <tr>
* <td>I</td>
* <td>I</td>
* </tr>
* <tr>
* <td>J</td>
* <td>J</td>
* </tr>
* <tr>
* <td>K</td>
* <td>K</td>
* </tr>
* <tr>
* <td>L</td>
* <td>L</td>
* </tr>
* <tr>
* <td>M</td>
* <td>M</td>
* </tr>
* <tr>
* <td>N</td>
* <td>N</td>
* </tr>
* <tr>
* <td>O</td>
* <td>O</td>
* </tr>
* <tr>
* <td>P</td>
* <td>P</td>
* </tr>
* <tr>
* <td>Q</td>
* <td>Q</td>
* </tr>
* <tr>
* <td>R</td>
* <td>R</td>
* </tr>
* <tr>
* <td>S</td>
* <td>S</td>
* </tr>
* <tr>
* <td>T</td>
* <td>T</td>
* </tr>
* <tr>
* <td>U</td>
* <td>U</td>
* </tr>
* <tr>
* <td>V</td>
* <td>V</td>
* </tr>
* <tr>
* <td>W</td>
* <td>W</td>
* </tr>
* <tr>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td>Y</td>
* <td>Y</td>
* </tr>
* <tr>
* <td>Z</td>
* <td>Z</td>
* </tr>
* <tr>
* <td>[</td>
* <td>[</td>
* </tr>
* <tr>
* <td>¥</td>
* <td>\\</td>
* </tr>
* <tr>
* <td>]</td>
* <td>]</td>
* </tr>
* <tr>
* <td>^</td>
* <td>^</td>
* </tr>
* <tr>
* <td>_</td>
* <td>_</td>
* </tr>
* <tr>
* <td>`</td>
* <td>`</td>
* </tr>
* <tr>
* <td>a</td>
* <td>a</td>
* </tr>
* <tr>
* <td>b</td>
* <td>b</td>
* </tr>
* <tr>
* <td>c</td>
* <td>c</td>
* </tr>
* <tr>
* <td>d</td>
* <td>d</td>
* </tr>
* <tr>
* <td>e</td>
* <td>e</td>
* </tr>
* <tr>
* <td>f</td>
* <td>f</td>
* </tr>
* <tr>
* <td>g</td>
* <td>g</td>
* </tr>
* <tr>
* <td>h</td>
* <td>h</td>
* </tr>
* <tr>
* <td>i</td>
* <td>i</td>
* </tr>
* <tr>
* <td>j</td>
* <td>j</td>
* </tr>
* <tr>
* <td>k</td>
* <td>k</td>
* </tr>
* <tr>
* <td>l</td>
* <td>l</td>
* </tr>
* <tr>
* <td>m</td>
* <td>m</td>
* </tr>
* <tr>
* <td>n</td>
* <td>n</td>
* </tr>
* <tr>
* <td>o</td>
* <td>o</td>
* </tr>
* <tr>
* <td>p</td>
* <td>p</td>
* </tr>
* <tr>
* <td>q</td>
* <td>q</td>
* </tr>
* <tr>
* <td>r</td>
* <td>r</td>
* </tr>
* <tr>
* <td>s</td>
* <td>s</td>
* </tr>
* <tr>
* <td>t</td>
* <td>t</td>
* </tr>
* <tr>
* <td>u</td>
* <td>u</td>
* </tr>
* <tr>
* <td>v</td>
* <td>v</td>
* </tr>
* <tr>
* <td>w</td>
* <td>w</td>
* </tr>
* <tr>
* <td>x</td>
* <td>x</td>
* </tr>
* <tr>
* <td>y</td>
* <td>y</td>
* </tr>
* <tr>
* <td>z</td>
* <td>z</td>
* </tr>
* <tr>
* <td>{</td>
* <td>{</td>
* </tr>
* <tr>
* <td>|</td>
* <td>|</td>
* </tr>
* <tr>
* <td>}</td>
* <td>}</td>
* </tr>
* <tr>
* <td>~(\uff5e)</td>
* <td>~</td>
* </tr>
* <tr>
* <td>。</td>
* <td>。</td>
* </tr>
* <tr>
* <td>「</td>
* <td>「</td>
* </tr>
* <tr>
* <td>」</td>
* <td>」</td>
* </tr>
* <tr>
* <td>、</td>
* <td>、</td>
* </tr>
* <tr>
* <td>・</td>
* <td>・</td>
* </tr>
* <tr>
* <td>ァ</td>
* <td>ァ</td>
* </tr>
* <tr>
* <td>ィ</td>
* <td>ィ</td>
* </tr>
* <tr>
* <td>ゥ</td>
* <td>ゥ</td>
* </tr>
* <tr>
* <td>ェ</td>
* <td>ェ</td>
* </tr>
* <tr>
* <td>ォ</td>
* <td>ォ</td>
* </tr>
* <tr>
* <td>ャ</td>
* <td>ャ</td>
* </tr>
* <tr>
* <td>ュ</td>
* <td>ュ</td>
* </tr>
* <tr>
* <td>ョ</td>
* <td>ョ</td>
* </tr>
* <tr>
* <td>ッ</td>
* <td>ッ</td>
* </tr>
* <tr>
* <td>ー</td>
* <td>ー</td>
* </tr>
* <tr>
* <td>ア</td>
* <td>ア</td>
* </tr>
* <tr>
* <td>イ</td>
* <td>イ</td>
* </tr>
* <tr>
* <td>ウ</td>
* <td>ウ</td>
* </tr>
* <tr>
* <td>エ</td>
* <td>エ</td>
* </tr>
* <tr>
* <td>オ</td>
* <td>オ</td>
* </tr>
* <tr>
* <td>カ</td>
* <td>カ</td>
* </tr>
* <tr>
* <td>キ</td>
* <td>キ</td>
* </tr>
* <tr>
* <td>ク</td>
* <td>ク</td>
* </tr>
* <tr>
* <td>ケ</td>
* <td>ケ</td>
* </tr>
* <tr>
* <td>コ</td>
* <td>コ</td>
* </tr>
* <tr>
* <td>サ</td>
* <td>サ</td>
* </tr>
* <tr>
* <td>シ</td>
* <td>シ</td>
* </tr>
* <tr>
* <td>ス</td>
* <td>ス</td>
* </tr>
* <tr>
* <td>セ</td>
* <td>セ</td>
* </tr>
* <tr>
* <td>ソ</td>
* <td>ソ</td>
* </tr>
* <tr>
* <td>タ</td>
* <td>タ</td>
* </tr>
* <tr>
* <td>チ</td>
* <td>チ</td>
* </tr>
* <tr>
* <td>ツ</td>
* <td>ツ</td>
* </tr>
* <tr>
* <td>テ</td>
* <td>テ</td>
* </tr>
* <tr>
* <td>ト</td>
* <td>ト</td>
* </tr>
* <tr>
* <td>ナ</td>
* <td>ナ</td>
* </tr>
* <tr>
* <td>ニ</td>
* <td>ニ</td>
* </tr>
* <tr>
* <td>ヌ</td>
* <td>ヌ</td>
* </tr>
* <tr>
* <td>ネ</td>
* <td>ネ</td>
* </tr>
* <tr>
* <td>ノ</td>
* <td>ノ</td>
* </tr>
* <tr>
* <td>ハ</td>
* <td>ハ</td>
* </tr>
* <tr>
* <td>ヒ</td>
* <td>ヒ</td>
* </tr>
* <tr>
* <td>フ</td>
* <td>フ</td>
* </tr>
* <tr>
* <td>ヘ</td>
* <td>ヘ</td>
* </tr>
* <tr>
* <td>ホ</td>
* <td>ホ</td>
* </tr>
* <tr>
* <td>マ</td>
* <td>マ</td>
* </tr>
* <tr>
* <td>ミ</td>
* <td>ミ</td>
* </tr>
* <tr>
* <td>ム</td>
* <td>ム</td>
* </tr>
* <tr>
* <td>メ</td>
* <td>メ</td>
* </tr>
* <tr>
* <td>モ</td>
* <td>モ</td>
* </tr>
* <tr>
* <td>ヤ</td>
* <td>ヤ</td>
* </tr>
* <tr>
* <td>ユ</td>
* <td>ユ</td>
* </tr>
* <tr>
* <td>ヨ</td>
* <td>ヨ</td>
* </tr>
* <tr>
* <td>ラ</td>
* <td>ラ</td>
* </tr>
* <tr>
* <td>リ</td>
* <td>リ</td>
* </tr>
* <tr>
* <td>ル</td>
* <td>ル</td>
* </tr>
* <tr>
* <td>レ</td>
* <td>レ</td>
* </tr>
* <tr>
* <td>ロ</td>
* <td>ロ</td>
* </tr>
* <tr>
* <td>ワ</td>
* <td>ワ</td>
* </tr>
* <tr>
* <td>ヲ</td>
* <td>ヲ</td>
* </tr>
* <tr>
* <td>ン</td>
* <td>ン</td>
* </tr>
* <tr>
* <td>ガ</td>
* <td>ガ</td>
* </tr>
* <tr>
* <td>ギ</td>
* <td>ギ</td>
* </tr>
* <tr>
* <td>グ</td>
* <td>グ</td>
* </tr>
* <tr>
* <td>ゲ</td>
* <td>ゲ</td>
* </tr>
* <tr>
* <td>ゴ</td>
* <td>ゴ</td>
* </tr>
* <tr>
* <td>ザ</td>
* <td>ザ</td>
* </tr>
* <tr>
* <td>ジ</td>
* <td>ジ</td>
* </tr>
* <tr>
* <td>ズ</td>
* <td>ズ</td>
* </tr>
* <tr>
* <td>ゼ</td>
* <td>ゼ</td>
* </tr>
* <tr>
* <td>ゾ</td>
* <td>ゾ</td>
* </tr>
* <tr>
* <td>ダ</td>
* <td>ダ</td>
* </tr>
* <tr>
* <td>ヂ</td>
* <td>ヂ</td>
* </tr>
* <tr>
* <td>ヅ</td>
* <td>ヅ</td>
* </tr>
* <tr>
* <td>デ</td>
* <td>デ</td>
* </tr>
* <tr>
* <td>ド</td>
* <td>ド</td>
* </tr>
* <tr>
* <td>バ</td>
* <td>バ</td>
* </tr>
* <tr>
* <td>ビ</td>
* <td>ビ</td>
* </tr>
* <tr>
* <td>ブ</td>
* <td>ブ</td>
* </tr>
* <tr>
* <td>べ</td>
* <td>ベ</td>
* </tr>
* <tr>
* <td>ボ</td>
* <td>ボ</td>
* </tr>
* <tr>
* <td>パ</td>
* <td>パ</td>
* </tr>
* <tr>
* <td>ピ</td>
* <td>ピ</td>
* </tr>
* <tr>
* <td>プ</td>
* <td>プ</td>
* </tr>
* <tr>
* <td>ペ</td>
* <td>ペ</td>
* </tr>
* <tr>
* <td>ポ</td>
* <td>ポ</td>
* </tr>
* <tr>
* <td>ヴ</td>
* <td>ヴ</td>
* </tr>
* <tr>
* <td>ヷ(\u30f7)</td>
* <td>ヷ</td>
* </tr>
* <tr>
* <td>ヺ(\u30fa)</td>
* <td>ヺ</td>
* </tr>
* <tr>
* <td>゛</td>
* <td>゙</td>
* </tr>
* <tr>
* <td>゜</td>
* <td>゚</td>
* </tr>
* <tr>
* <td> </td>
* <td> </td>
* </tr>
* </table>
* Note that this converter converts full-width string and half-width string each other as much as possible. This rule does not
* matter JIS X 0201 nor JIS X 0208.
* @since 5.1.0
*/
public final class DefaultFullHalf {
/**
* Default constructor
*/
private DefaultFullHalf() {
// do nothing for Default constructor
}
/**
* a singleton instance with default mapping table.
* @see DefaultFullHalf
*/
public static final FullHalfConverter INSTANCE = new FullHalfConverter(
new FullHalfPairsBuilder()
.pair("!", "!")
.pair("”", "\"")
.pair("#", "#")
.pair("$", "$")
.pair("%", "%")
.pair("&", "&")
.pair("’", "'")
.pair("(", "(")
.pair(")", ")")
.pair("*", "*")
.pair("+", "+")
.pair(",", ",")
.pair("-", "-")
.pair(".", ".")
.pair("/", "/")
.pair("0", "0")
.pair("1", "1")
.pair("2", "2")
.pair("3", "3")
.pair("4", "4")
.pair("5", "5")
.pair("6", "6")
.pair("7", "7")
.pair("8", "8")
.pair("9", "9")
.pair(":", ":")
.pair(";", ";")
.pair("<", "<")
.pair("=", "=")
.pair(">", ">")
.pair("?", "?")
.pair("@", "@")
.pair("A", "A")
.pair("B", "B")
.pair("C", "C")
.pair("D", "D")
.pair("E", "E")
.pair("F", "F")
.pair("G", "G")
.pair("H", "H")
.pair("I", "I")
.pair("J", "J")
.pair("K", "K")
.pair("L", "L")
.pair("M", "M")
.pair("N", "N")
.pair("O", "O")
.pair("P", "P")
.pair("Q", "Q")
.pair("R", "R")
.pair("S", "S")
.pair("T", "T")
.pair("U", "U")
.pair("V", "V")
.pair("W", "W")
.pair("X", "X")
.pair("Y", "Y")
.pair("Z", "Z")
.pair("[", "[")
.pair("¥", "\\")
.pair("]", "]")
.pair("^", "^")
.pair("_", "_")
.pair("`", "`")
.pair("a", "a")
.pair("b", "b")
.pair("c", "c")
.pair("d", "d")
.pair("e", "e")
.pair("f", "f")
.pair("g", "g")
.pair("h", "h")
.pair("i", "i")
.pair("j", "j")
.pair("k", "k")
.pair("l", "l")
.pair("m", "m")
.pair("n", "n")
.pair("o", "o")
.pair("p", "p")
.pair("q", "q")
.pair("r", "r")
.pair("s", "s")
.pair("t", "t")
.pair("u", "u")
.pair("v", "v")
.pair("w", "w")
.pair("x", "x")
.pair("y", "y")
.pair("z", "z")
.pair("{", "{")
.pair("|", "|")
.pair("}", "}")
.pair("\uff5e", "~")
.pair("。", "。")
.pair("「", "「")
.pair("」", "」")
.pair("、", "、")
.pair("・", "・")
.pair("ァ", "ァ")
.pair("ィ", "ィ")
.pair("ゥ", "ゥ")
.pair("ェ", "ェ")
.pair("ォ", "ォ")
.pair("ャ", "ャ")
.pair("ュ", "ュ")
.pair("ョ", "ョ")
.pair("ッ", "ッ")
.pair("ー", "ー")
.pair("ア", "ア")
.pair("イ", "イ")
.pair("ウ", "ウ")
.pair("エ", "エ")
.pair("オ", "オ")
.pair("カ", "カ")
.pair("キ", "キ")
.pair("ク", "ク")
.pair("ケ", "ケ")
.pair("コ", "コ")
.pair("サ", "サ")
.pair("シ", "シ")
.pair("ス", "ス")
.pair("セ", "セ")
.pair("ソ", "ソ")
.pair("タ", "タ")
.pair("チ", "チ")
.pair("ツ", "ツ")
.pair("テ", "テ")
.pair("ト", "ト")
.pair("ナ", "ナ")
.pair("ニ", "ニ")
.pair("ヌ", "ヌ")
.pair("ネ", "ネ")
.pair("ノ", "ノ")
.pair("ハ", "ハ")
.pair("ヒ", "ヒ")
.pair("フ", "フ")
.pair("ヘ", "ヘ")
.pair("ホ", "ホ")
.pair("マ", "マ")
.pair("ミ", "ミ")
.pair("ム", "ム")
.pair("メ", "メ")
.pair("モ", "モ")
.pair("ヤ", "ヤ")
.pair("ユ", "ユ")
.pair("ヨ", "ヨ")
.pair("ラ", "ラ")
.pair("リ", "リ")
.pair("ル", "ル")
.pair("レ", "レ")
.pair("ロ", "ロ")
.pair("ワ", "ワ")
.pair("ヲ", "ヲ")
.pair("ン", "ン")
.pair("ガ", "ガ")
.pair("ギ", "ギ")
.pair("グ", "グ")
.pair("ゲ", "ゲ")
.pair("ゴ", "ゴ")
.pair("ザ", "ザ")
.pair("ジ", "ジ")
.pair("ズ", "ズ")
.pair("ゼ", "ゼ")
.pair("ゾ", "ゾ")
.pair("ダ", "ダ")
.pair("ヂ", "ヂ")
.pair("ヅ", "ヅ")
.pair("デ", "デ")
.pair("ド", "ド")
.pair("バ", "バ")
.pair("ビ", "ビ")
.pair("ブ", "ブ")
.pair("べ", "ベ")
.pair("ボ", "ボ")
.pair("パ", "パ")
.pair("ピ", "ピ")
.pair("プ", "プ")
.pair("ペ", "ペ")
.pair("ポ", "ポ")
.pair("ヴ", "ヴ")
.pair("\u30f7", "ヷ")
.pair("\u30fa", "ヺ")
.pair("゛", "゙")
.pair("゜", "゚")
.pair(" ", " ")
.build());
}