Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.jflyfox.util.extend.CnToSpell Maven / Gradle / Ivy
/**
* Copyright 2015-2025 FLY的狐狸(email:[email protected] qq:369191470).
*
* 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 com.jflyfox.util.extend;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;
import com.jflyfox.util.StrUtils;
/**
* 汉字转化为全拼
*
*/
public class CnToSpell {
private static LinkedHashMap spellMap = null;
static {
if (spellMap == null) {
spellMap = new LinkedHashMap(400);
}
initialize();
}
private CnToSpell() {
}
private static void spellPut(String spell, int ascii) {
spellMap.put(spell, new Integer(ascii));
}
private static void initialize() {
spellPut(" a ", -20319);
spellPut(" ai ", -20317);
spellPut(" an ", -20304);
spellPut(" ang ", -20295);
spellPut(" ao ", -20292);
spellPut(" ba ", -20283);
spellPut(" bai ", -20265);
spellPut(" ban ", -20257);
spellPut(" bang ", -20242);
spellPut(" bao ", -20230);
spellPut(" bei ", -20051);
spellPut(" ben ", -20036);
spellPut(" beng ", -20032);
spellPut(" bi ", -20026);
spellPut(" bian ", -20002);
spellPut(" biao ", -19990);
spellPut(" bie ", -19986);
spellPut(" bin ", -19982);
spellPut(" bing ", -19976);
spellPut(" bo ", -19805);
spellPut(" bu ", -19784);
spellPut(" ca ", -19775);
spellPut(" cai ", -19774);
spellPut(" can ", -19763);
spellPut(" cang ", -19756);
spellPut(" cao ", -19751);
spellPut(" ce ", -19746);
spellPut(" ceng ", -19741);
spellPut(" cha ", -19739);
spellPut(" chai ", -19728);
spellPut(" chan ", -19725);
spellPut(" chang ", -19715);
spellPut(" chao ", -19540);
spellPut(" che ", -19531);
spellPut(" chen ", -19525);
spellPut(" cheng ", -19515);
spellPut(" chi ", -19500);
spellPut(" chong ", -19484);
spellPut(" chou ", -19479);
spellPut(" chu ", -19467);
spellPut(" chuai ", -19289);
spellPut(" chuan ", -19288);
spellPut(" chuang ", -19281);
spellPut(" chui ", -19275);
spellPut(" chun ", -19270);
spellPut(" chuo ", -19263);
spellPut(" ci ", -19261);
spellPut(" cong ", -19249);
spellPut(" cou ", -19243);
spellPut(" cu ", -19242);
spellPut(" cuan ", -19238);
spellPut(" cui ", -19235);
spellPut(" cun ", -19227);
spellPut(" cuo ", -19224);
spellPut(" da ", -19218);
spellPut(" dai ", -19212);
spellPut(" dan ", -19038);
spellPut(" dang ", -19023);
spellPut(" dao ", -19018);
spellPut(" de ", -19006);
spellPut(" deng ", -19003);
spellPut(" di ", -18996);
spellPut(" dian ", -18977);
spellPut(" diao ", -18961);
spellPut(" die ", -18952);
spellPut(" ding ", -18783);
spellPut(" diu ", -18774);
spellPut(" dong ", -18773);
spellPut(" dou ", -18763);
spellPut(" du ", -18756);
spellPut(" duan ", -18741);
spellPut(" dui ", -18735);
spellPut(" dun ", -18731);
spellPut(" duo ", -18722);
spellPut(" e ", -18710);
spellPut(" en ", -18697);
spellPut(" er ", -18696);
spellPut(" fa ", -18526);
spellPut(" fan ", -18518);
spellPut(" fang ", -18501);
spellPut(" fei ", -18490);
spellPut(" fen ", -18478);
spellPut(" feng ", -18463);
spellPut(" fo ", -18448);
spellPut(" fou ", -18447);
spellPut(" fu ", -18446);
spellPut(" ga ", -18239);
spellPut(" gai ", -18237);
spellPut(" gan ", -18231);
spellPut(" gang ", -18220);
spellPut(" gao ", -18211);
spellPut(" ge ", -18201);
spellPut(" gei ", -18184);
spellPut(" gen ", -18183);
spellPut(" geng ", -18181);
spellPut(" gong ", -18012);
spellPut(" gou ", -17997);
spellPut(" gu ", -17988);
spellPut(" gua ", -17970);
spellPut(" guai ", -17964);
spellPut(" guan ", -17961);
spellPut(" guang ", -17950);
spellPut(" gui ", -17947);
spellPut(" gun ", -17931);
spellPut(" guo ", -17928);
spellPut(" ha ", -17922);
spellPut(" hai ", -17759);
spellPut(" han ", -17752);
spellPut(" hang ", -17733);
spellPut(" hao ", -17730);
spellPut(" he ", -17721);
spellPut(" hei ", -17703);
spellPut(" hen ", -17701);
spellPut(" heng ", -17697);
spellPut(" hong ", -17692);
spellPut(" hou ", -17683);
spellPut(" hu ", -17676);
spellPut(" hua ", -17496);
spellPut(" huai ", -17487);
spellPut(" huan ", -17482);
spellPut(" huang ", -17468);
spellPut(" hui ", -17454);
spellPut(" hun ", -17433);
spellPut(" huo ", -17427);
spellPut(" ji ", -17417);
spellPut(" jia ", -17202);
spellPut(" jian ", -17185);
spellPut(" jiang ", -16983);
spellPut(" jiao ", -16970);
spellPut(" jie ", -16942);
spellPut(" jin ", -16915);
spellPut(" jing ", -16733);
spellPut(" jiong ", -16708);
spellPut(" jiu ", -16706);
spellPut(" ju ", -16689);
spellPut(" juan ", -16664);
spellPut(" jue ", -16657);
spellPut(" jun ", -16647);
spellPut(" ka ", -16474);
spellPut(" kai ", -16470);
spellPut(" kan ", -16465);
spellPut(" kang ", -16459);
spellPut(" kao ", -16452);
spellPut(" ke ", -16448);
spellPut(" ken ", -16433);
spellPut(" keng ", -16429);
spellPut(" kong ", -16427);
spellPut(" kou ", -16423);
spellPut(" ku ", -16419);
spellPut(" kua ", -16412);
spellPut(" kuai ", -16407);
spellPut(" kuan ", -16403);
spellPut(" kuang ", -16401);
spellPut(" kui ", -16393);
spellPut(" kun ", -16220);
spellPut(" kuo ", -16216);
spellPut(" la ", -16212);
spellPut(" lai ", -16205);
spellPut(" lan ", -16202);
spellPut(" lang ", -16187);
spellPut(" lao ", -16180);
spellPut(" le ", -16171);
spellPut(" lei ", -16169);
spellPut(" leng ", -16158);
spellPut(" li ", -16155);
spellPut(" lia ", -15959);
spellPut(" lian ", -15958);
spellPut(" liang ", -15944);
spellPut(" liao ", -15933);
spellPut(" lie ", -15920);
spellPut(" lin ", -15915);
spellPut(" ling ", -15903);
spellPut(" liu ", -15889);
spellPut(" long ", -15878);
spellPut(" lou ", -15707);
spellPut(" lu ", -15701);
spellPut(" lv ", -15681);
spellPut(" luan ", -15667);
spellPut(" lue ", -15661);
spellPut(" lun ", -15659);
spellPut(" luo ", -15652);
spellPut(" ma ", -15640);
spellPut(" mai ", -15631);
spellPut(" man ", -15625);
spellPut(" mang ", -15454);
spellPut(" mao ", -15448);
spellPut(" me ", -15436);
spellPut(" mei ", -15435);
spellPut(" men ", -15419);
spellPut(" meng ", -15416);
spellPut(" mi ", -15408);
spellPut(" mian ", -15394);
spellPut(" miao ", -15385);
spellPut(" mie ", -15377);
spellPut(" min ", -15375);
spellPut(" ming ", -15369);
spellPut(" miu ", -15363);
spellPut(" mo ", -15362);
spellPut(" mou ", -15183);
spellPut(" mu ", -15180);
spellPut(" na ", -15165);
spellPut(" nai ", -15158);
spellPut(" nan ", -15153);
spellPut(" nang ", -15150);
spellPut(" nao ", -15149);
spellPut(" ne ", -15144);
spellPut(" nei ", -15143);
spellPut(" nen ", -15141);
spellPut(" neng ", -15140);
spellPut(" ni ", -15139);
spellPut(" nian ", -15128);
spellPut(" niang ", -15121);
spellPut(" niao ", -15119);
spellPut(" nie ", -15117);
spellPut(" nin ", -15110);
spellPut(" ning ", -15109);
spellPut(" niu ", -14941);
spellPut(" nong ", -14937);
spellPut(" nu ", -14933);
spellPut(" nv ", -14930);
spellPut(" nuan ", -14929);
spellPut(" nue ", -14928);
spellPut(" nuo ", -14926);
spellPut(" o ", -14922);
spellPut(" ou ", -14921);
spellPut(" pa ", -14914);
spellPut(" pai ", -14908);
spellPut(" pan ", -14902);
spellPut(" pang ", -14894);
spellPut(" pao ", -14889);
spellPut(" pei ", -14882);
spellPut(" pen ", -14873);
spellPut(" peng ", -14871);
spellPut(" pi ", -14857);
spellPut(" pian ", -14678);
spellPut(" piao ", -14674);
spellPut(" pie ", -14670);
spellPut(" pin ", -14668);
spellPut(" ping ", -14663);
spellPut(" po ", -14654);
spellPut(" pu ", -14645);
spellPut(" qi ", -14630);
spellPut(" qia ", -14594);
spellPut(" qian ", -14429);
spellPut(" qiang ", -14407);
spellPut(" qiao ", -14399);
spellPut(" qie ", -14384);
spellPut(" qin ", -14379);
spellPut(" qing ", -14368);
spellPut(" qiong ", -14355);
spellPut(" qiu ", -14353);
spellPut(" qu ", -14345);
spellPut(" quan ", -14170);
spellPut(" que ", -14159);
spellPut(" qun ", -14151);
spellPut(" ran ", -14149);
spellPut(" rang ", -14145);
spellPut(" rao ", -14140);
spellPut(" re ", -14137);
spellPut(" ren ", -14135);
spellPut(" reng ", -14125);
spellPut(" ri ", -14123);
spellPut(" rong ", -14122);
spellPut(" rou ", -14112);
spellPut(" ru ", -14109);
spellPut(" ruan ", -14099);
spellPut(" rui ", -14097);
spellPut(" run ", -14094);
spellPut(" ruo ", -14092);
spellPut(" sa ", -14090);
spellPut(" sai ", -14087);
spellPut(" san ", -14083);
spellPut(" sang ", -13917);
spellPut(" sao ", -13914);
spellPut(" se ", -13910);
spellPut(" sen ", -13907);
spellPut(" seng ", -13906);
spellPut(" sha ", -13905);
spellPut(" shai ", -13896);
spellPut(" shan ", -13894);
spellPut(" shang ", -13878);
spellPut(" shao ", -13870);
spellPut(" she ", -13859);
spellPut(" shen ", -13847);
spellPut(" sheng ", -13831);
spellPut(" shi ", -13658);
spellPut(" shou ", -13611);
spellPut(" shu ", -13601);
spellPut(" shua ", -13406);
spellPut(" shuai ", -13404);
spellPut(" shuan ", -13400);
spellPut(" shuang ", -13398);
spellPut(" shui ", -13395);
spellPut(" shun ", -13391);
spellPut(" shuo ", -13387);
spellPut(" si ", -13383);
spellPut(" song ", -13367);
spellPut(" sou ", -13359);
spellPut(" su ", -13356);
spellPut(" suan ", -13343);
spellPut(" sui ", -13340);
spellPut(" sun ", -13329);
spellPut(" suo ", -13326);
spellPut(" ta ", -13318);
spellPut(" tai ", -13147);
spellPut(" tan ", -13138);
spellPut(" tang ", -13120);
spellPut(" tao ", -13107);
spellPut(" te ", -13096);
spellPut(" teng ", -13095);
spellPut(" ti ", -13091);
spellPut(" tian ", -13076);
spellPut(" tiao ", -13068);
spellPut(" tie ", -13063);
spellPut(" ting ", -13060);
spellPut(" tong ", -12888);
spellPut(" tou ", -12875);
spellPut(" tu ", -12871);
spellPut(" tuan ", -12860);
spellPut(" tui ", -12858);
spellPut(" tun ", -12852);
spellPut(" tuo ", -12849);
spellPut(" wa ", -12838);
spellPut(" wai ", -12831);
spellPut(" wan ", -12829);
spellPut(" wang ", -12812);
spellPut(" wei ", -12802);
spellPut(" wen ", -12607);
spellPut(" weng ", -12597);
spellPut(" wo ", -12594);
spellPut(" wu ", -12585);
spellPut(" xi ", -12556);
spellPut(" xia ", -12359);
spellPut(" xian ", -12346);
spellPut(" xiang ", -12320);
spellPut(" xiao ", -12300);
spellPut(" xie ", -12120);
spellPut(" xin ", -12099);
spellPut(" xing ", -12089);
spellPut(" xiong ", -12074);
spellPut(" xiu ", -12067);
spellPut(" xu ", -12058);
spellPut(" xuan ", -12039);
spellPut(" xue ", -11867);
spellPut(" xun ", -11861);
spellPut(" ya ", -11847);
spellPut(" yan ", -11831);
spellPut(" yang ", -11798);
spellPut(" yao ", -11781);
spellPut(" ye ", -11604);
spellPut(" yi ", -11589);
spellPut(" yin ", -11536);
spellPut(" ying ", -11358);
spellPut(" yo ", -11340);
spellPut(" yong ", -11339);
spellPut(" you ", -11324);
spellPut(" yu ", -11303);
spellPut(" yuan ", -11097);
spellPut(" yue ", -11077);
spellPut(" yun ", -11067);
spellPut(" za ", -11055);
spellPut(" zai ", -11052);
spellPut(" zan ", -11045);
spellPut(" zang ", -11041);
spellPut(" zao ", -11038);
spellPut(" ze ", -11024);
spellPut(" zei ", -11020);
spellPut(" zen ", -11019);
spellPut(" zeng ", -11018);
spellPut(" zha ", -11014);
spellPut(" zhai ", -10838);
spellPut(" zhan ", -10832);
spellPut(" zhang ", -10815);
spellPut(" zhao ", -10800);
spellPut(" zhe ", -10790);
spellPut(" zhen ", -10780);
spellPut(" zheng ", -10764);
spellPut(" zhi ", -10587);
spellPut(" zhong ", -10544);
spellPut(" zhou ", -10533);
spellPut(" zhu ", -10519);
spellPut(" zhua ", -10331);
spellPut(" zhuai ", -10329);
spellPut(" zhuan ", -10328);
spellPut(" zhuang ", -10322);
spellPut(" zhui ", -10315);
spellPut(" zhun ", -10309);
spellPut(" zhuo ", -10307);
spellPut(" zi ", -10296);
spellPut(" zong ", -10281);
spellPut(" zou ", -10274);
spellPut(" zu ", -10270);
spellPut(" zuan ", -10262);
spellPut(" zui ", -10260);
spellPut(" zun ", -10256);
spellPut(" zuo ", -10254);
}
/**
* 获得单个汉字的Ascii.
*
* @param cn
* char 汉字字符
* @return int 错误返回 0,否则返回ascii
*/
public static int getCnAscii(char cn) {
byte[] bytes = (String.valueOf(cn)).getBytes();
if (bytes == null || bytes.length > 2 || bytes.length <= 0) { // 错误
return 0;
}
if (bytes.length == 1) { // 英文字符
return bytes[0];
}
if (bytes.length == 2) { // 中文字符
int hightByte = 256 + bytes[0];
int lowByte = 256 + bytes[1];
int ascii = (256 * hightByte + lowByte) - 256 * 256;
// System.out.println("ASCII=" + ascii);
return ascii;
}
return 0; // 错误
}
/**
* 根据ASCII码到SpellMap中查找对应的拼音
*
* @param ascii
* int 字符对应的ASCII
* @return String 拼音,首先判断ASCII是否>0&<160,如果是返回对应的字符,
*
* 否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音.
*/
public static String getSpellByAscii(int ascii) {
if (ascii > 0 && ascii < 160) { // 单字符
return String.valueOf((char) ascii);
}
if (ascii < -20319 || ascii > -10247) { // 不知道的字符
return null;
}
Set keySet = spellMap.keySet();
Iterator it = keySet.iterator();
String spell0 = null;
;
String spell = null;
int asciiRang0 = -20319;
int asciiRang;
while (it.hasNext()) {
spell = (String) it.next();
Object valObj = spellMap.get(spell);
if (valObj instanceof Integer) {
asciiRang = ((Integer) valObj).intValue();
if (ascii >= asciiRang0 && ascii < asciiRang) { // 区间找到
return (spell0 == null) ? spell : spell0;
} else {
spell0 = spell;
asciiRang0 = asciiRang;
}
}
}
return null;
}
/**
* 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换
*
* @param cnStr
* String 字符串
* @return String 转换成全拼后的字符串
*/
public static String getFullSpell(String cnStr) {
if (null == cnStr || "".equals(cnStr.trim())) {
return cnStr;
}
char[] chars = cnStr.toCharArray();
StringBuffer retuBuf = new StringBuffer();
for (int i = 0, Len = chars.length; i < Len; i++) {
int ascii = getCnAscii(chars[i]);
if (ascii == 0) { // 取ascii时出错
retuBuf.append(chars[i]);
} else {
String spell = getSpellByAscii(ascii);
if (spell == null) {
retuBuf.append(chars[i]);
} else {
retuBuf.append(spell);
} // end of if spell == null
} // end of if ascii <= -20400
} // end of for
return retuBuf.toString();
}
public static String getFirstSpell(String cnStr) {
return null;
}
public static void main(String[] args) {
String str = null;
str = " 小红帽 ";
System.out.println(" Spell= " + StrUtils.clear(CnToSpell.getFullSpell(str)));
}
}