package open.dolphin.mbean; import java.util.*; /** * * @author ishizaka */ class ConvData { String m_sAsc; String m_sKana; ConvData(String strAC, String strKana) { m_sAsc = strAC; m_sKana = strKana; } String GetAsc() { return m_sAsc; } String GetKana() { return m_sKana; } } public class KanaToAscii { List<ConvData> m_DataAry; public KanaToAscii() { m_DataAry = new ArrayList<ConvData>(); ConvData pData; pData = new ConvData("A", "ア"); m_DataAry.add(pData); pData = new ConvData("I", "イ"); m_DataAry.add(pData); pData = new ConvData("U", "ウ"); m_DataAry.add(pData); pData = new ConvData("E", "エ"); m_DataAry.add(pData); pData = new ConvData("O", "オ"); m_DataAry.add(pData); pData = new ConvData("KA", "カ"); m_DataAry.add(pData); pData = new ConvData("KI", "キ"); m_DataAry.add(pData); pData = new ConvData("KU", "ク"); m_DataAry.add(pData); pData = new ConvData("KE", "ケ"); m_DataAry.add(pData); pData = new ConvData("KO", "コ"); m_DataAry.add(pData); pData = new ConvData("SA", "サ"); m_DataAry.add(pData); pData = new ConvData("SHI", "シ"); m_DataAry.add(pData); pData = new ConvData("SU", "ス"); m_DataAry.add(pData); pData = new ConvData("SE", "セ"); m_DataAry.add(pData); pData = new ConvData("SO", "ソ"); m_DataAry.add(pData); pData = new ConvData("TA", "タ"); m_DataAry.add(pData); pData = new ConvData("CHI", "チ"); m_DataAry.add(pData); pData = new ConvData("TSU", "ツ"); m_DataAry.add(pData); pData = new ConvData("TE", "テ"); m_DataAry.add(pData); pData = new ConvData("TO", "ト"); m_DataAry.add(pData); pData = new ConvData("NA", "ナ"); m_DataAry.add(pData); pData = new ConvData("NI", "ニ"); m_DataAry.add(pData); pData = new ConvData("NU", "ヌ"); m_DataAry.add(pData); pData = new ConvData("NE", "ネ"); m_DataAry.add(pData); pData = new ConvData("NO", "ノ"); m_DataAry.add(pData); pData = new ConvData("HA", "ハ"); m_DataAry.add(pData); pData = new ConvData("HI", "ヒ"); m_DataAry.add(pData); //pData = new ConvData( "HU", "フ" ); m_DataAry.add( pData ); pData = new ConvData("FU", "フ"); m_DataAry.add(pData); // chg 07.10.19 K.Funabashi pData = new ConvData("HE", "へ"); m_DataAry.add(pData); pData = new ConvData("HO", "ホ"); m_DataAry.add(pData); pData = new ConvData("MA", "マ"); m_DataAry.add(pData); pData = new ConvData("MI", "ミ"); m_DataAry.add(pData); pData = new ConvData("MU", "ム"); m_DataAry.add(pData); pData = new ConvData("ME", "メ"); m_DataAry.add(pData); pData = new ConvData("MO", "モ"); m_DataAry.add(pData); pData = new ConvData("YA", "ヤ"); m_DataAry.add(pData); pData = new ConvData("YU", "ユ"); m_DataAry.add(pData); pData = new ConvData("YO", "ヨ"); m_DataAry.add(pData); pData = new ConvData("RA", "ラ"); m_DataAry.add(pData); pData = new ConvData("RI", "リ"); m_DataAry.add(pData); pData = new ConvData("RU", "ル"); m_DataAry.add(pData); pData = new ConvData("RE", "レ"); m_DataAry.add(pData); pData = new ConvData("RO", "ロ"); m_DataAry.add(pData); pData = new ConvData("WA", "ワ"); m_DataAry.add(pData); pData = new ConvData("WO", "ヲ"); m_DataAry.add(pData); pData = new ConvData("N", "ン"); m_DataAry.add(pData); //pData = new ConvData( "TTSU", "ッ" ); m_DataAry.add( pData ); pData = new ConvData("$", "ッ"); m_DataAry.add(pData); // chg 07.10.19 K.Funabashi ヘボン式対応 pData = new ConvData("KWA", "クァ"); m_DataAry.add(pData); pData = new ConvData("KWI", "クィ"); m_DataAry.add(pData); pData = new ConvData("KWU", "クゥ"); m_DataAry.add(pData); pData = new ConvData("KWE", "クェ"); m_DataAry.add(pData); pData = new ConvData("KWO", "クォ"); m_DataAry.add(pData); pData = new ConvData("FA", "ファ"); m_DataAry.add(pData); pData = new ConvData("FI", "フィ"); m_DataAry.add(pData); pData = new ConvData("FU", "フゥ"); m_DataAry.add(pData); pData = new ConvData("FE", "フェ"); m_DataAry.add(pData); pData = new ConvData("FO", "フォ"); m_DataAry.add(pData); pData = new ConvData("FYA", "フャ"); m_DataAry.add(pData); pData = new ConvData("FYU", "フュ"); m_DataAry.add(pData); pData = new ConvData("FYO", "フョ"); m_DataAry.add(pData); pData = new ConvData("KYA", "キャ"); m_DataAry.add(pData); pData = new ConvData("KYI", "キィ"); m_DataAry.add(pData); pData = new ConvData("KYU", "キュ"); m_DataAry.add(pData); pData = new ConvData("KYE", "キェ"); m_DataAry.add(pData); pData = new ConvData("KYO", "キョ"); m_DataAry.add(pData); pData = new ConvData("SHA", "シャ"); m_DataAry.add(pData); pData = new ConvData("SHU", "シュ"); m_DataAry.add(pData); pData = new ConvData("SHE", "シェ"); m_DataAry.add(pData); pData = new ConvData("SHO", "ショ"); m_DataAry.add(pData); //pData = new ConvData( "TYA", "チャ" ); m_DataAry.add( pData ); pData = new ConvData("CHA", "チャ"); m_DataAry.add(pData); // chg 07.10.19 K.Funabashi ヘボン式対応 pData = new ConvData("TYI", "チィ"); m_DataAry.add(pData); //pData = new ConvData( "TYU", "チュ" ); m_DataAry.add( pData ); pData = new ConvData("CHU", "チュ"); m_DataAry.add(pData); // chg 07.10.19 K.Funabashi ヘボン式対応 pData = new ConvData("TYE", "チェ"); m_DataAry.add(pData); //pData = new ConvData( "CYO", "チョ" ); m_DataAry.add( pData ); pData = new ConvData("CHO", "チヨ"); m_DataAry.add(pData); // chg 07.10.19 K.Funabashi ヘボン式対応 pData = new ConvData("NYA", "ニャ"); m_DataAry.add(pData); pData = new ConvData("NYI", "ニィ"); m_DataAry.add(pData); pData = new ConvData("NYU", "ニュ"); m_DataAry.add(pData); pData = new ConvData("NYE", "ニェ"); m_DataAry.add(pData); pData = new ConvData("NYO", "ニョ"); m_DataAry.add(pData); pData = new ConvData("HYA", "ヒャ"); m_DataAry.add(pData); pData = new ConvData("HYI", "ヒィ"); m_DataAry.add(pData); pData = new ConvData("HYU", "ヒュ"); m_DataAry.add(pData); pData = new ConvData("HYE", "ヒェ"); m_DataAry.add(pData); pData = new ConvData("HYO", "ヒョ"); m_DataAry.add(pData); pData = new ConvData("MYA", "ミャ"); m_DataAry.add(pData); pData = new ConvData("MYI", "ミィ"); m_DataAry.add(pData); // pData = new ConvData( "MY", "ミュ" ); m_DataAry.add( pData ); pData = new ConvData("MYU", "ミュ"); m_DataAry.add(pData); // 00.12.06 タイプミス? pData = new ConvData("MYE", "ミェ"); m_DataAry.add(pData); pData = new ConvData("MYO", "ミョ"); m_DataAry.add(pData); pData = new ConvData("RYA", "リャ"); m_DataAry.add(pData); pData = new ConvData("RYI", "リィ"); m_DataAry.add(pData); pData = new ConvData("RYU", "リュ"); m_DataAry.add(pData); pData = new ConvData("RYE", "リェ"); m_DataAry.add(pData); pData = new ConvData("RYO", "リョ"); m_DataAry.add(pData); pData = new ConvData("WI", "ウィ"); m_DataAry.add(pData); pData = new ConvData("WE", "ウェ"); m_DataAry.add(pData); pData = new ConvData("GA", "ガ"); m_DataAry.add(pData); pData = new ConvData("GI", "ギ"); m_DataAry.add(pData); pData = new ConvData("GU", "グ"); m_DataAry.add(pData); pData = new ConvData("VU", "ヴ"); m_DataAry.add(pData); pData = new ConvData("GE", "ゲ"); m_DataAry.add(pData); pData = new ConvData("GO", "ゴ"); m_DataAry.add(pData); pData = new ConvData("ZA", "ザ"); m_DataAry.add(pData); pData = new ConvData("JI", "ジ"); m_DataAry.add(pData); pData = new ConvData("ZU", "ズ"); m_DataAry.add(pData); pData = new ConvData("ZE", "ゼ"); m_DataAry.add(pData); pData = new ConvData("ZO", "ゾ"); m_DataAry.add(pData); pData = new ConvData("DA", "ダ"); m_DataAry.add(pData); pData = new ConvData("DI", "ヂ"); m_DataAry.add(pData); pData = new ConvData("DU", "ヅ"); m_DataAry.add(pData); pData = new ConvData("DE", "デ"); m_DataAry.add(pData); pData = new ConvData("DO", "ド"); m_DataAry.add(pData); pData = new ConvData("BA", "バ"); m_DataAry.add(pData); pData = new ConvData("BI", "ビ"); m_DataAry.add(pData); pData = new ConvData("BU", "ブ"); m_DataAry.add(pData); pData = new ConvData("BE", "ベ"); m_DataAry.add(pData); pData = new ConvData("BO", "ボ"); m_DataAry.add(pData); pData = new ConvData("PA", "パ"); m_DataAry.add(pData); pData = new ConvData("PI", "ピ"); m_DataAry.add(pData); pData = new ConvData("PU", "プ"); m_DataAry.add(pData); pData = new ConvData("PE", "ペ"); m_DataAry.add(pData); pData = new ConvData("PO", "ポ"); m_DataAry.add(pData); pData = new ConvData("GWA", "グァ"); m_DataAry.add(pData); pData = new ConvData("GWI", "グィ"); m_DataAry.add(pData); pData = new ConvData("GWU", "グゥ"); m_DataAry.add(pData); pData = new ConvData("GWE", "グェ"); m_DataAry.add(pData); pData = new ConvData("GWO", "グォ"); m_DataAry.add(pData); pData = new ConvData("GYA", "ギャ"); m_DataAry.add(pData); pData = new ConvData("GYI", "ギィ"); m_DataAry.add(pData); pData = new ConvData("GYU", "ギュ"); m_DataAry.add(pData); pData = new ConvData("GYE", "ギェ"); m_DataAry.add(pData); pData = new ConvData("GYO", "ギョ"); m_DataAry.add(pData); pData = new ConvData("JA", "ジャ"); m_DataAry.add(pData); pData = new ConvData("ZYI", "ジィ"); m_DataAry.add(pData); pData = new ConvData("JU", "ジュ"); m_DataAry.add(pData); pData = new ConvData("JE", "ジェ"); m_DataAry.add(pData); pData = new ConvData("JO", "ジョ"); m_DataAry.add(pData); pData = new ConvData("DYA", "ヂァ"); m_DataAry.add(pData); pData = new ConvData("DYI", "ヂィ"); m_DataAry.add(pData); pData = new ConvData("DYU", "ヂョ"); m_DataAry.add(pData); pData = new ConvData("DYE", "ヂェ"); m_DataAry.add(pData); pData = new ConvData("DYO", "ヂョ"); m_DataAry.add(pData); pData = new ConvData("BYA", "ビャ"); m_DataAry.add(pData); pData = new ConvData("BYI", "ビィ"); m_DataAry.add(pData); pData = new ConvData("BYU", "ビュ"); m_DataAry.add(pData); pData = new ConvData("BYE", "ビェ"); m_DataAry.add(pData); pData = new ConvData("BYO", "ビョ"); m_DataAry.add(pData); pData = new ConvData("VA", "ヴァ"); m_DataAry.add(pData); pData = new ConvData("VI", "ヴィ"); m_DataAry.add(pData); pData = new ConvData("VE", "ヴェ"); m_DataAry.add(pData); pData = new ConvData("VO", "ヴォ"); m_DataAry.add(pData); pData = new ConvData("VYA", "ヴャ"); m_DataAry.add(pData); pData = new ConvData("VYI", "ヴィ"); m_DataAry.add(pData); pData = new ConvData("VYU", "ヴュ"); m_DataAry.add(pData); pData = new ConvData("VYE", "ヴェ"); m_DataAry.add(pData); pData = new ConvData("VYO", "ヴョ"); m_DataAry.add(pData); pData = new ConvData("PYA", "ピャ"); m_DataAry.add(pData); pData = new ConvData("PYI", "ピィ"); m_DataAry.add(pData); pData = new ConvData("PYU", "ピュ"); m_DataAry.add(pData); pData = new ConvData("PYE", "ピェ"); m_DataAry.add(pData); pData = new ConvData("PYO", "ペョ"); m_DataAry.add(pData); pData = new ConvData(" ", " "); m_DataAry.add(pData); pData = new ConvData("", "ー"); m_DataAry.add(pData); // chg 07.10.19 K.Funabashi 念のため pData = new ConvData("0", "0"); m_DataAry.add(pData); pData = new ConvData("1", "1"); m_DataAry.add(pData); pData = new ConvData("2", "2"); m_DataAry.add(pData); pData = new ConvData("3", "3"); m_DataAry.add(pData); pData = new ConvData("4", "4"); m_DataAry.add(pData); pData = new ConvData("5", "5"); m_DataAry.add(pData); pData = new ConvData("6", "6"); m_DataAry.add(pData); pData = new ConvData("7", "7"); m_DataAry.add(pData); pData = new ConvData("8", "8"); m_DataAry.add(pData); pData = new ConvData("9", "9"); m_DataAry.add(pData); pData = new ConvData("A", "A"); m_DataAry.add(pData); pData = new ConvData("B", "B"); m_DataAry.add(pData); pData = new ConvData("C", "C"); m_DataAry.add(pData); pData = new ConvData("D", "D"); m_DataAry.add(pData); pData = new ConvData("E", "E"); m_DataAry.add(pData); pData = new ConvData("F", "F"); m_DataAry.add(pData); pData = new ConvData("G", "G"); m_DataAry.add(pData); pData = new ConvData("H", "H"); m_DataAry.add(pData); pData = new ConvData("I", "I"); m_DataAry.add(pData); pData = new ConvData("J", "J"); m_DataAry.add(pData); pData = new ConvData("K", "K"); m_DataAry.add(pData); pData = new ConvData("L", "L"); m_DataAry.add(pData); pData = new ConvData("M", "M"); m_DataAry.add(pData); pData = new ConvData("N", "N"); m_DataAry.add(pData); pData = new ConvData("O", "O"); m_DataAry.add(pData); pData = new ConvData("P", "P"); m_DataAry.add(pData); pData = new ConvData("Q", "Q"); m_DataAry.add(pData); pData = new ConvData("R", "R"); m_DataAry.add(pData); pData = new ConvData("S", "S"); m_DataAry.add(pData); pData = new ConvData("T", "T"); m_DataAry.add(pData); pData = new ConvData("U", "U"); m_DataAry.add(pData); pData = new ConvData("V", "V"); m_DataAry.add(pData); pData = new ConvData("W", "W"); m_DataAry.add(pData); pData = new ConvData("X", "X"); m_DataAry.add(pData); pData = new ConvData("Y", "Y"); m_DataAry.add(pData); pData = new ConvData("Z", "Z"); m_DataAry.add(pData); pData = new ConvData("a", "a"); m_DataAry.add(pData); pData = new ConvData("b", "b"); m_DataAry.add(pData); pData = new ConvData("c", "c"); m_DataAry.add(pData); pData = new ConvData("d", "d"); m_DataAry.add(pData); pData = new ConvData("e", "e"); m_DataAry.add(pData); pData = new ConvData("f", "f"); m_DataAry.add(pData); pData = new ConvData("g", "g"); m_DataAry.add(pData); pData = new ConvData("h", "h"); m_DataAry.add(pData); pData = new ConvData("i", "i"); m_DataAry.add(pData); pData = new ConvData("j", "j"); m_DataAry.add(pData); pData = new ConvData("k", "k"); m_DataAry.add(pData); pData = new ConvData("l", "l"); m_DataAry.add(pData); pData = new ConvData("m", "m"); m_DataAry.add(pData); pData = new ConvData("n", "n"); m_DataAry.add(pData); pData = new ConvData("o", "o"); m_DataAry.add(pData); pData = new ConvData("p", "p"); m_DataAry.add(pData); pData = new ConvData("q", "q"); m_DataAry.add(pData); pData = new ConvData("r", "r"); m_DataAry.add(pData); pData = new ConvData("s", "s"); m_DataAry.add(pData); pData = new ConvData("t", "t"); m_DataAry.add(pData); pData = new ConvData("u", "u"); m_DataAry.add(pData); pData = new ConvData("v", "v"); m_DataAry.add(pData); pData = new ConvData("w", "w"); m_DataAry.add(pData); pData = new ConvData("x", "x"); m_DataAry.add(pData); pData = new ConvData("y", "y"); m_DataAry.add(pData); pData = new ConvData("z", "z"); m_DataAry.add(pData); } void KanaToAscii_Free() { m_DataAry.clear(); } int GetSize() { return m_DataAry.size(); } String GetAsc(int nPos) { if (nPos < 0 || nPos > GetSize() - 1) { // return CString( "" ); String sRet = null; return sRet; // 02.05.31 kin } return m_DataAry.get(nPos).GetAsc(); } String GetKana(int nPos) { if (nPos < 0 || nPos > GetSize() - 1) { // return CString( "" ); String sRet = null; return sRet; // 02.05.31 kin } return m_DataAry.get(nPos).GetKana(); } public String CHGKanatoASCII(String strKana, String strASCII) { String strCHG = ""; boolean bTrue = false; int nLen = 0; ConvData dic; for (nLen = 0; nLen < strKana.length(); nLen++) { String strSub = ""; bTrue = false; if (nLen + 1 < strKana.length()) { strSub = strKana.substring((nLen), nLen + 2); for (Iterator i = m_DataAry.iterator(); i.hasNext();) { dic = (ConvData) i.next(); if (dic.m_sKana.equals(strSub)) { strCHG += dic.m_sAsc; bTrue = true; break; } } if (bTrue) { nLen += 1; continue; } } strSub = strKana.substring((nLen), nLen + 1); for (Iterator i = m_DataAry.iterator(); i.hasNext();) { dic = (ConvData) i.next(); if (dic.m_sKana.equals(strSub)) { strCHG += dic.m_sAsc; bTrue = true; break; } } if (!bTrue) { //return -1; //return null; // カナ/英数字以外の文字は?に変換する strCHG += "?"; } } byte[] ChgByte = strCHG.getBytes(); for (nLen = 0; nLen < ChgByte.length; nLen++) { if (ChgByte[nLen] == '$') { if (nLen + 1 < ChgByte.length) { if (ChgByte[nLen + 1] != ' ') { ChgByte[nLen] = ChgByte[nLen + 1]; if (ChgByte[nLen] == 'C') { ChgByte[nLen] = 'T'; } } } } else if (ChgByte[nLen] == 'N' && nLen + 1 < ChgByte.length) { if (ChgByte[nLen + 1] == 'B' || ChgByte[nLen + 1] == 'M' || ChgByte[nLen + 1] == 'P') { ChgByte[nLen] = 'M'; } } } String sAsc = new String(ChgByte); // sAsc.replace("$", ""); sAsc.replace("OO", "OH"); sAsc.replace("OU", "OH"); sAsc.replace("AA", "A"); sAsc.replace("II", "I"); sAsc.replace("UU", "U"); sAsc.replace("EE", "E"); //strASCII = sAsc; return sAsc; } public static void main(String[] args) { KanaToAscii ka = new KanaToAscii(); String result = ka.CHGKanatoASCII("フナバシ ケンジ", ""); System.err.println(result); } }