Java获取汉字全拼和首拼

  1. importjava.util.Collections;
  2. importjava.util.Iterator;
  3. importjava.util.LinkedHashMap;
  4. importjava.util.Map;
  5. /**
  6. *将汉字转化为全拼
  7. */
  8. publicclassCnToSpell1{
  9. privatestaticMap<String,Integer>spellMap=null;
  10. //存放生僻字和其拼音的Map
  11. privatestaticMap<Character,String>uncommonWordsMap=null;
  12. static{
  13. if(spellMap==null){
  14. spellMap=Collections.synchronizedMap(newLinkedHashMap<String,Integer>(396));
  15. uncommonWordsMap=Collections.synchronizedMap(newLinkedHashMap<Character,String>(200));
  16. }
  17. initialize();
  18. initUncommonWords();
  19. }
  20. privateCnToSpell1(){}
  21. /**
  22. *初始化
  23. */
  24. privatestaticvoidinitialize(){
  25. spellMap.put("’a",-20319);
  26. spellMap.put("’ai",-20317);
  27. spellMap.put("’an",-20304);
  28. spellMap.put("’ang",-20295);
  29. spellMap.put("’ao",-20292);
  30. spellMap.put("ba",-20283);
  31. spellMap.put("bai",-20265);
  32. spellMap.put("ban",-20257);
  33. spellMap.put("bang",-20242);
  34. spellMap.put("bao",-20230);
  35. spellMap.put("bei",-20051);
  36. spellMap.put("ben",-20036);
  37. spellMap.put("beng",-20032);
  38. spellMap.put("bi",-20026);
  39. spellMap.put("bian",-20002);
  40. spellMap.put("biao",-19990);
  41. spellMap.put("bie",-19986);
  42. spellMap.put("bin",-19982);
  43. spellMap.put("bing",-19976);
  44. spellMap.put("bo",-19805);
  45. spellMap.put("bu",-19784);
  46. spellMap.put("ca",-19775);
  47. spellMap.put("cai",-19774);
  48. spellMap.put("can",-19763);
  49. spellMap.put("cang",-19756);
  50. spellMap.put("cao",-19751);
  51. spellMap.put("ce",-19746);
  52. spellMap.put("ceng",-19741);
  53. spellMap.put("cha",-19739);
  54. spellMap.put("chai",-19728);
  55. spellMap.put("chan",-19725);
  56. spellMap.put("chang",-19715);
  57. spellMap.put("chao",-19540);
  58. spellMap.put("che",-19531);
  59. spellMap.put("chen",-19525);
  60. spellMap.put("cheng",-19515);
  61. spellMap.put("chi",-19500);
  62. spellMap.put("chong",-19484);
  63. spellMap.put("chou",-19479);
  64. spellMap.put("chu",-19467);
  65. spellMap.put("chuai",-19289);
  66. spellMap.put("chuan",-19288);
  67. spellMap.put("chuang",-19281);
  68. spellMap.put("chui",-19275);
  69. spellMap.put("chun",-19270);
  70. spellMap.put("chuo",-19263);
  71. spellMap.put("ci",-19261);
  72. spellMap.put("cong",-19249);
  73. spellMap.put("cou",-19243);
  74. spellMap.put("cu",-19242);
  75. spellMap.put("cuan",-19238);
  76. spellMap.put("cui",-19235);
  77. spellMap.put("cun",-19227);
  78. spellMap.put("cuo",-19224);
  79. spellMap.put("da",-19218);
  80. spellMap.put("dai",-19212);
  81. spellMap.put("dan",-19038);
  82. spellMap.put("dang",-19023);
  83. spellMap.put("dao",-19018);
  84. spellMap.put("de",-19006);
  85. spellMap.put("deng",-19003);
  86. spellMap.put("di",-18996);
  87. spellMap.put("dian",-18977);
  88. spellMap.put("diao",-18961);
  89. spellMap.put("die",-18952);
  90. spellMap.put("ding",-18783);
  91. spellMap.put("diu",-18774);
  92. spellMap.put("dong",-18773);
  93. spellMap.put("dou",-18763);
  94. spellMap.put("du",-18756);
  95. spellMap.put("duan",-18741);
  96. spellMap.put("dui",-18735);
  97. spellMap.put("dun",-18731);
  98. spellMap.put("duo",-18722);
  99. spellMap.put("’e",-18710);
  100. spellMap.put("’en",-18697);
  101. spellMap.put("’er",-18696);
  102. spellMap.put("fa",-18526);
  103. spellMap.put("fan",-18518);
  104. spellMap.put("fang",-18501);
  105. spellMap.put("fei",-18490);
  106. spellMap.put("fen",-18478);
  107. spellMap.put("feng",-18463);
  108. spellMap.put("fo",-18448);
  109. spellMap.put("fou",-18447);
  110. spellMap.put("fu",-18446);
  111. spellMap.put("ga",-18239);
  112. spellMap.put("gai",-18237);
  113. spellMap.put("gan",-18231);
  114. spellMap.put("gang",-18220);
  115. spellMap.put("gao",-18211);
  116. spellMap.put("ge",-18201);
  117. spellMap.put("gei",-18184);
  118. spellMap.put("gen",-18183);
  119. spellMap.put("geng",-18181);
  120. spellMap.put("gong",-18012);
  121. spellMap.put("gou",-17997);
  122. spellMap.put("gu",-17988);
  123. spellMap.put("gua",-17970);
  124. spellMap.put("guai",-17964);
  125. spellMap.put("guan",-17961);
  126. spellMap.put("guang",-17950);
  127. spellMap.put("gui",-17947);
  128. spellMap.put("gun",-17931);
  129. spellMap.put("guo",-17928);
  130. spellMap.put("ha",-17922);
  131. spellMap.put("hai",-17759);
  132. spellMap.put("han",-17752);
  133. spellMap.put("hang",-17733);
  134. spellMap.put("hao",-17730);
  135. spellMap.put("he",-17721);
  136. spellMap.put("hei",-17703);
  137. spellMap.put("hen",-17701);
  138. spellMap.put("heng",-17697);
  139. spellMap.put("hong",-17692);
  140. spellMap.put("hou",-17683);
  141. spellMap.put("hu",-17676);
  142. spellMap.put("hua",-17496);
  143. spellMap.put("huai",-17487);
  144. spellMap.put("huan",-17482);
  145. spellMap.put("huang",-17468);
  146. spellMap.put("hui",-17454);
  147. spellMap.put("hun",-17433);
  148. spellMap.put("huo",-17427);
  149. spellMap.put("ji",-17417);
  150. spellMap.put("jia",-17202);
  151. spellMap.put("jian",-17185);
  152. spellMap.put("jiang",-16983);
  153. spellMap.put("jiao",-16970);
  154. spellMap.put("jie",-16942);
  155. spellMap.put("jin",-16915);
  156. spellMap.put("jing",-16733);
  157. spellMap.put("jiong",-16708);
  158. spellMap.put("jiu",-16706);
  159. spellMap.put("ju",-16689);
  160. spellMap.put("juan",-16664);
  161. spellMap.put("jue",-16657);
  162. spellMap.put("jun",-16647);
  163. spellMap.put("ka",-16474);
  164. spellMap.put("kai",-16470);
  165. spellMap.put("kan",-16465);
  166. spellMap.put("kang",-16459);
  167. spellMap.put("kao",-16452);
  168. spellMap.put("ke",-16448);
  169. spellMap.put("ken",-16433);
  170. spellMap.put("keng",-16429);
  171. spellMap.put("kong",-16427);
  172. spellMap.put("kou",-16423);
  173. spellMap.put("ku",-16419);
  174. spellMap.put("kua",-16412);
  175. spellMap.put("kuai",-16407);
  176. spellMap.put("kuan",-16403);
  177. spellMap.put("kuang",-16401);
  178. spellMap.put("kui",-16393);
  179. spellMap.put("kun",-16220);
  180. spellMap.put("kuo",-16216);
  181. spellMap.put("la",-16212);
  182. spellMap.put("lai",-16205);
  183. spellMap.put("lan",-16202);
  184. spellMap.put("lang",-16187);
  185. spellMap.put("lao",-16180);
  186. spellMap.put("le",-16171);
  187. spellMap.put("lei",-16169);
  188. spellMap.put("leng",-16158);
  189. spellMap.put("li",-16155);
  190. spellMap.put("lia",-15959);
  191. spellMap.put("lian",-15958);
  192. spellMap.put("liang",-15944);
  193. spellMap.put("liao",-15933);
  194. spellMap.put("lie",-15920);
  195. spellMap.put("lin",-15915);
  196. spellMap.put("ling",-15903);
  197. spellMap.put("liu",-15889);
  198. spellMap.put("long",-15878);
  199. spellMap.put("lou",-15707);
  200. spellMap.put("lu",-15701);
  201. spellMap.put("lv",-15681);
  202. spellMap.put("luan",-15667);
  203. spellMap.put("lue",-15661);
  204. spellMap.put("lun",-15659);
  205. spellMap.put("luo",-15652);
  206. spellMap.put("ma",-15640);
  207. spellMap.put("mai",-15631);
  208. spellMap.put("man",-15625);
  209. spellMap.put("mang",-15454);
  210. spellMap.put("mao",-15448);
  211. spellMap.put("me",-15436);
  212. spellMap.put("mei",-15435);
  213. spellMap.put("men",-15419);
  214. spellMap.put("meng",-15416);
  215. spellMap.put("mi",-15408);
  216. spellMap.put("mian",-15394);
  217. spellMap.put("miao",-15385);
  218. spellMap.put("mie",-15377);
  219. spellMap.put("min",-15375);
  220. spellMap.put("ming",-15369);
  221. spellMap.put("miu",-15363);
  222. spellMap.put("mo",-15362);
  223. spellMap.put("mou",-15183);
  224. spellMap.put("mu",-15180);
  225. spellMap.put("na",-15165);
  226. spellMap.put("nai",-15158);
  227. spellMap.put("nan",-15153);
  228. spellMap.put("nang",-15150);
  229. spellMap.put("nao",-15149);
  230. spellMap.put("ne",-15144);
  231. spellMap.put("nei",-15143);
  232. spellMap.put("nen",-15141);
  233. spellMap.put("neng",-15140);
  234. spellMap.put("ni",-15139);
  235. spellMap.put("nian",-15128);
  236. spellMap.put("niang",-15121);
  237. spellMap.put("niao",-15119);
  238. spellMap.put("nie",-15117);
  239. spellMap.put("nin",-15110);
  240. spellMap.put("ning",-15109);
  241. spellMap.put("niu",-14941);
  242. spellMap.put("nong",-14937);
  243. spellMap.put("nu",-14933);
  244. spellMap.put("nv",-14930);
  245. spellMap.put("nuan",-14929);
  246. spellMap.put("nue",-14928);
  247. spellMap.put("nuo",-14926);
  248. spellMap.put("’o",-14922);
  249. spellMap.put("’ou",-14921);
  250. spellMap.put("pa",-14914);
  251. spellMap.put("pai",-14908);
  252. spellMap.put("pan",-14902);
  253. spellMap.put("pang",-14894);
  254. spellMap.put("pao",-14889);
  255. spellMap.put("pei",-14882);
  256. spellMap.put("pen",-14873);
  257. spellMap.put("peng",-14871);
  258. spellMap.put("pi",-14857);
  259. spellMap.put("pian",-14678);
  260. spellMap.put("piao",-14674);
  261. spellMap.put("pie",-14670);
  262. spellMap.put("pin",-14668);
  263. spellMap.put("ping",-14663);
  264. spellMap.put("po",-14654);
  265. spellMap.put("pu",-14645);
  266. spellMap.put("qi",-14630);
  267. spellMap.put("qia",-14594);
  268. spellMap.put("qian",-14429);
  269. spellMap.put("qiang",-14407);
  270. spellMap.put("qiao",-14399);
  271. spellMap.put("qie",-14384);
  272. spellMap.put("qin",-14379);
  273. spellMap.put("qing",-14368);
  274. spellMap.put("qiong",-14355);
  275. spellMap.put("qiu",-14353);
  276. spellMap.put("qu",-14345);
  277. spellMap.put("quan",-14170);
  278. spellMap.put("que",-14159);
  279. spellMap.put("qun",-14151);
  280. spellMap.put("ran",-14149);
  281. spellMap.put("rang",-14145);
  282. spellMap.put("rao",-14140);
  283. spellMap.put("re",-14137);
  284. spellMap.put("ren",-14135);
  285. spellMap.put("reng",-14125);
  286. spellMap.put("ri",-14123);
  287. spellMap.put("rong",-14122);
  288. spellMap.put("rou",-14112);
  289. spellMap.put("ru",-14109);
  290. spellMap.put("ruan",-14099);
  291. spellMap.put("rui",-14097);
  292. spellMap.put("run",-14094);
  293. spellMap.put("ruo",-14092);
  294. spellMap.put("sa",-14090);
  295. spellMap.put("sai",-14087);
  296. spellMap.put("san",-14083);
  297. spellMap.put("sang",-13917);
  298. spellMap.put("sao",-13914);
  299. spellMap.put("se",-13910);
  300. spellMap.put("sen",-13907);
  301. spellMap.put("seng",-13906);
  302. spellMap.put("sha",-13905);
  303. spellMap.put("shai",-13896);
  304. spellMap.put("shan",-13894);
  305. spellMap.put("shang",-13878);
  306. spellMap.put("shao",-13870);
  307. spellMap.put("she",-13859);
  308. spellMap.put("shen",-13847);
  309. spellMap.put("sheng",-13831);
  310. spellMap.put("shi",-13658);
  311. spellMap.put("shou",-13611);
  312. spellMap.put("shu",-13601);
  313. spellMap.put("shua",-13406);
  314. spellMap.put("shuai",-13404);
  315. spellMap.put("shuan",-13400);
  316. spellMap.put("shuang",-13398);
  317. spellMap.put("shui",-13395);
  318. spellMap.put("shun",-13391);
  319. spellMap.put("shuo",-13387);
  320. spellMap.put("si",-13383);
  321. spellMap.put("song",-13367);
  322. spellMap.put("sou",-13359);
  323. spellMap.put("su",-13356);
  324. spellMap.put("suan",-13343);
  325. spellMap.put("sui",-13340);
  326. spellMap.put("sun",-13329);
  327. spellMap.put("suo",-13326);
  328. spellMap.put("ta",-13318);
  329. spellMap.put("tai",-13147);
  330. spellMap.put("tan",-13138);
  331. spellMap.put("tang",-13120);
  332. spellMap.put("tao",-13107);
  333. spellMap.put("te",-13096);
  334. spellMap.put("teng",-13095);
  335. spellMap.put("ti",-13091);
  336. spellMap.put("tian",-13076);
  337. spellMap.put("tiao",-13068);
  338. spellMap.put("tie",-13063);
  339. spellMap.put("ting",-13060);
  340. spellMap.put("tong",-12888);
  341. spellMap.put("tou",-12875);
  342. spellMap.put("tu",-12871);
  343. spellMap.put("tuan",-12860);
  344. spellMap.put("tui",-12858);
  345. spellMap.put("tun",-12852);
  346. spellMap.put("tuo",-12849);
  347. spellMap.put("wa",-12838);
  348. spellMap.put("wai",-12831);
  349. spellMap.put("wan",-12829);
  350. spellMap.put("wang",-12812);
  351. spellMap.put("wei",-12802);
  352. spellMap.put("wen",-12607);
  353. spellMap.put("weng",-12597);
  354. spellMap.put("wo",-12594);
  355. spellMap.put("wu",-12585);
  356. spellMap.put("xi",-12556);
  357. spellMap.put("xia",-12359);
  358. spellMap.put("xian",-12346);
  359. spellMap.put("xiang",-12320);
  360. spellMap.put("xiao",-12300);
  361. spellMap.put("xie",-12120);
  362. spellMap.put("xin",-12099);
  363. spellMap.put("xing",-12089);
  364. spellMap.put("xiong",-12074);
  365. spellMap.put("xiu",-12067);
  366. spellMap.put("xu",-12058);
  367. spellMap.put("xuan",-12039);
  368. spellMap.put("xue",-11867);
  369. spellMap.put("xun",-11861);
  370. spellMap.put("ya",-11847);
  371. spellMap.put("yan",-11831);
  372. spellMap.put("yang",-11798);
  373. spellMap.put("yao",-11781);
  374. spellMap.put("ye",-11604);
  375. spellMap.put("yi",-11589);
  376. spellMap.put("yin",-11536);
  377. spellMap.put("ying",-11358);
  378. spellMap.put("yo",-11340);
  379. spellMap.put("yong",-11339);
  380. spellMap.put("you",-11324);
  381. spellMap.put("yu",-11303);
  382. spellMap.put("yuan",-11097);
  383. spellMap.put("yue",-11077);
  384. spellMap.put("yun",-11067);
  385. spellMap.put("za",-11055);
  386. spellMap.put("zai",-11052);
  387. spellMap.put("zan",-11045);
  388. spellMap.put("zang",-11041);
  389. spellMap.put("zao",-11038);
  390. spellMap.put("ze",-11024);
  391. spellMap.put("zei",-11020);
  392. spellMap.put("zen",-11019);
  393. spellMap.put("zeng",-11018);
  394. spellMap.put("zha",-11014);
  395. spellMap.put("zhai",-10838);
  396. spellMap.put("zhan",-10832);
  397. spellMap.put("zhang",-10815);
  398. spellMap.put("zhao",-10800);
  399. spellMap.put("zhe",-10790);
  400. spellMap.put("zhen",-10780);
  401. spellMap.put("zheng",-10764);
  402. spellMap.put("zhi",-10587);
  403. spellMap.put("zhong",-10544);
  404. spellMap.put("zhou",-10533);
  405. spellMap.put("zhu",-10519);
  406. spellMap.put("zhua",-10331);
  407. spellMap.put("zhuai",-10329);
  408. spellMap.put("zhuan",-10328);
  409. spellMap.put("zhuang",-10322);
  410. spellMap.put("zhui",-10315);
  411. spellMap.put("zhun",-10309);
  412. spellMap.put("zhuo",-10307);
  413. spellMap.put("zi",-10296);
  414. spellMap.put("zong",-10281);
  415. spellMap.put("zou",-10274);
  416. spellMap.put("zu",-10270);
  417. spellMap.put("zuan",-10262);
  418. spellMap.put("zui",-10260);
  419. spellMap.put("zun",-10256);
  420. spellMap.put("zuo",-10254);
  421. }
  422. /**
  423. *添加生僻字
  424. *@paramcnWord生僻字
  425. *@paramspell生僻字的拼音,如果拼音以a,o,e开头,请将开头分别改为’a,’o,’e,如:安(’an)
  426. */
  427. publicstaticvoidputUncommonWord(charcnWord,Stringspell){
  428. uncommonWordsMap.put(cnWord,spell);
  429. }
  430. /**
  431. *初始化生僻字
  432. */
  433. privatestaticvoidinitUncommonWords(){
  434. putUncommonWord('奡',"ao");
  435. putUncommonWord('灞',"ba");
  436. putUncommonWord('犇',"ben");
  437. putUncommonWord('猋',"biao");
  438. putUncommonWord('骉',"biao");
  439. putUncommonWord('杈',"cha");
  440. putUncommonWord('棽',"chen");
  441. putUncommonWord('琤',"cheng");
  442. putUncommonWord('魑',"chi");
  443. putUncommonWord('蟲',"chong");
  444. putUncommonWord('翀',"chong");
  445. putUncommonWord('麤',"cu");
  446. putUncommonWord('毳',"cui");
  447. putUncommonWord('昉',"fang");
  448. putUncommonWord('沣',"feng");
  449. putUncommonWord('玽',"gou");
  450. putUncommonWord('焓',"han");
  451. putUncommonWord('琀',"han");
  452. putUncommonWord('晗',"han");
  453. putUncommonWord('浛',"han");
  454. putUncommonWord('翮',"he");
  455. putUncommonWord('翯',"he");
  456. putUncommonWord('嬛',"huan");
  457. putUncommonWord('翙',"hui");
  458. putUncommonWord('劼',"jie");
  459. putUncommonWord('璟',"jing");
  460. putUncommonWord('誩',"jing");
  461. putUncommonWord('競',"jing");
  462. putUncommonWord('焜',"kun");
  463. putUncommonWord('琨',"kun");
  464. putUncommonWord('鹍',"kun");
  465. putUncommonWord('骊',"li");
  466. putUncommonWord('鎏',"liu");
  467. putUncommonWord('嫚',"man");
  468. putUncommonWord('槑',"mei");
  469. putUncommonWord('淼',"miao");
  470. putUncommonWord('婻',"nan");
  471. putUncommonWord('暔',"nan");
  472. putUncommonWord('甯',"ning");
  473. putUncommonWord('寗',"ning");
  474. putUncommonWord('掱',"pa");
  475. putUncommonWord('玭',"pi");
  476. putUncommonWord('汧',"qian");
  477. putUncommonWord('骎',"qin");
  478. putUncommonWord('甠',"qing");
  479. putUncommonWord('暒',"qing");
  480. putUncommonWord('凊',"qing");
  481. putUncommonWord('郬',"qing");
  482. putUncommonWord('靘',"qing");
  483. putUncommonWord('悫',"que");
  484. putUncommonWord('慤',"que");
  485. putUncommonWord('瑢',"rong");
  486. putUncommonWord('珅',"shen");
  487. putUncommonWord('屾',"shen");
  488. putUncommonWord('燊',"shen");
  489. putUncommonWord('焺',"sheng");
  490. putUncommonWord('珄',"sheng");
  491. putUncommonWord('晟',"sheng");
  492. putUncommonWord('昇',"sheng");
  493. putUncommonWord('眚',"sheng");
  494. putUncommonWord('湦',"sheng");
  495. putUncommonWord('陹',"sheng");
  496. putUncommonWord('竔',"sheng");
  497. putUncommonWord('琞',"sheng");
  498. putUncommonWord('湜',"shi");
  499. putUncommonWord('甦',"su");
  500. putUncommonWord('弢',"tao");
  501. putUncommonWord('瑱',"tian");
  502. putUncommonWord('仝',"tong");
  503. putUncommonWord('烓',"wei");
  504. putUncommonWord('炜',"wei");
  505. putUncommonWord('玮',"wei");
  506. putUncommonWord('沕',"wu");
  507. putUncommonWord('邬',"wu");
  508. putUncommonWord('晞',"xi");
  509. putUncommonWord('顕',"xian");
  510. putUncommonWord('婋',"xiao");
  511. putUncommonWord('虓',"xiao");
  512. putUncommonWord('筱',"xiao");
  513. putUncommonWord('勰',"xie");
  514. putUncommonWord('忻',"xin");
  515. putUncommonWord('庥',"xiu");
  516. putUncommonWord('媭',"xu");
  517. putUncommonWord('珝',"xu");
  518. putUncommonWord('昫',"xu");
  519. putUncommonWord('烜',"xuan");
  520. putUncommonWord('煊',"xuan");
  521. putUncommonWord('翾',"xuan");
  522. putUncommonWord('昍',"xuan");
  523. putUncommonWord('暄',"xuan");
  524. putUncommonWord('娅',"ya");
  525. putUncommonWord('琰',"yan");
  526. putUncommonWord('妍',"yan");
  527. putUncommonWord('焱',"yan");
  528. putUncommonWord('玚',"yang");
  529. putUncommonWord('旸',"yang");
  530. putUncommonWord('飏',"yang");
  531. putUncommonWord('垚',"yao");
  532. putUncommonWord('峣',"yao");
  533. putUncommonWord('怡',"yi");
  534. putUncommonWord('燚',"yi");
  535. putUncommonWord('晹',"yi");
  536. putUncommonWord('祎',"yi");
  537. putUncommonWord('瑛',"ying");
  538. putUncommonWord('煐',"ying");
  539. putUncommonWord('媖',"ying");
  540. putUncommonWord('暎',"ying");
  541. putUncommonWord('滢',"ying");
  542. putUncommonWord('锳',"ying");
  543. putUncommonWord('莜',"you");
  544. putUncommonWord('昱',"yu");
  545. putUncommonWord('沄',"yun");
  546. putUncommonWord('晢',"zhe");
  547. putUncommonWord('喆',"zhe");
  548. putUncommonWord('臸',"zhi");
  549. }
  550. /**
  551. *获得单个汉字的Ascii.
  552. *@paramcn汉字字符
  553. *@return汉字对应的ascii,错误时返回0
  554. */
  555. publicstaticintgetCnAscii(charcn){
  556. byte[]bytes=(String.valueOf(cn)).getBytes();
  557. if(bytes==null||bytes.length==0||bytes.length>2){//错误
  558. return0;
  559. }
  560. if(bytes.length==1){//英文字符
  561. returnbytes[0];
  562. }
  563. if(bytes.length==2){//中文字符
  564. inthightByte=256+bytes[0];
  565. intlowByte=256+bytes[1];
  566. return(256*hightByte+lowByte)-256*256;//返回ASCII
  567. }
  568. return0;//错误
  569. }
  570. /**
  571. *根据ASCII码到SpellMap中查找对应的拼音
  572. *@paramasciiASCII
  573. *@returnascii对应的拼音,如果ascii对应的字符为单字符,则返回对应的单字符,如果不是单字符且在spellMap中没找到对应的拼音,则返回空字符串(""),
  574. */
  575. publicstaticStringgetSpellByAscii(intascii){
  576. if(ascii>0&&ascii<160){//单字符
  577. returnString.valueOf((char)ascii);
  578. }
  579. if(ascii<-20319||ascii>-10247){//不知道的字符
  580. return"";
  581. }
  582. Stringspell=null;//key
  583. IntegerasciiRang;//value
  584. StringspellPrevious=null;//用来保存上次轮循环的key
  585. intasciiRangPrevious=-20319;//用来保存上一次循环的value
  586. for(Iteratorit=spellMap.keySet().iterator();it.hasNext();){
  587. spell=(String)it.next();//拼音
  588. asciiRang=spellMap.get(spell);//拼音的ASCII
  589. if(asciiRang!=null){
  590. if(ascii>=asciiRangPrevious&&ascii<asciiRang){//区间找到,返回对应的拼音
  591. return(spellPrevious==null)?spell:spellPrevious;
  592. }else{
  593. spellPrevious=spell;
  594. asciiRangPrevious=asciiRang;
  595. }
  596. }
  597. }
  598. return"";
  599. }
  600. /**
  601. *获取字符串的全拼或首拼,是汉字则转化为对应的拼音或拼音首字母,其它字符不进行转换
  602. *@paramcnStr要获取全拼或首拼的字符串
  603. *@paramonlyFirstSpell是否只获取首拼,为true时,只获取首拼,为false时,获取全拼
  604. *@returnStringcnStr的全拼或首拼,如果cnStr为null时,返回""
  605. */
  606. publicstaticStringgetSpell(StringcnStr,booleanonlyFirstSpell){
  607. if(cnStr==null){
  608. return"";
  609. }
  610. char[]chars=cnStr.trim().toCharArray();
  611. StringBuffersb=newStringBuffer();
  612. for(inti=0,len=chars.length;i<len;i++){
  613. intascii=getCnAscii(chars[i]);
  614. if(ascii==0){//如果获取汉字的ASCII出错,则不进行转换
  615. sb.append(chars[i]);
  616. }else{
  617. Stringspell=getSpellByAscii(ascii);//根据ASCII取拼音
  618. if(spell==null||spell.length()==0){//如果根据ASCII取拼音没取到,则到生僻字Map中取
  619. spell=uncommonWordsMap.get(chars[i]);
  620. }
  621. if(spell==null||spell.length()==0){//如果没有取到对应的拼音,则不做转换,追加原字符
  622. spell=uncommonWordsMap.get(chars[i]);
  623. }else{
  624. if(onlyFirstSpell){
  625. sb.append(spell.startsWith("’")?spell.substring(1,2):spell.substring(0,1));
  626. }else{
  627. sb.append(spell);
  628. }
  629. }
  630. }
  631. }//endoffor
  632. returnsb.toString();
  633. }
  634. publicstaticvoidmain(String[]args){
  635. String[]s={"获取汉字全拼和首拼测试","Thisisatest","a,b;c[d]","标,点。","圆角数字123,特殊符号·¥%——……","繁体字:西安會議","西安","棽燊顕峣山"};
  636. for(inti=0;i<s.length;i++){
  637. longl1=System.currentTimeMillis();
  638. System.out.println(s[i]+"的全拼:"+getSpell(s[i],false));
  639. System.out.println(s[i]+"的首拼:"+getSpell(s[i],true));
  640. System.out.println("获取全拼和首拼共用了"+(System.currentTimeMillis()-l1)+"毫秒/n");
  641. }
  642. }
  643. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值