/* * 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()); }