今编码时,欲以注音之法打字于文本框内,而检其音于词库,期以词库之小而得输入之疾也。为之, 须臾困于句读之否识,故求百度以拆解之法,或拙或鄙,无可为者。有道是:“纸上得来终觉浅,觉知此事要躬行。”又竟惊觉声韵难辨,汉洋不分,汗颜。温之,汝等皆匹夫耳!吾来装逼!!!若本文有幸为君转述,望注出处,
/**
将给出的拼音串以前字贪婪原则拆分成汉语读音,如
renai
有两种拆分方法,一作“re,nai”,一作“ren,ai”
以前字贪婪原则拆解成“ren,ai”
*/
public class PinYinSpliter {
//此类用于缓存数据和方法返回数据
private static class Wrapper{
int cursor;
Matcher shengMu;
Matcher yunMu;
Matcher stand;
}
//几个可以单独作为音节的韵母
private static Pattern stand=Pattern.compile(
"([ae](?:ng|i|n)|er|ao|ou|a|e)");
//11个多拼音节韵母 ia iao ian iang iong ua uo uai uan uang üan
//其他均为单拼音节
private static Pattern yunmu=Pattern.compile(
"(i(?:ong|ang|an|ao|a)|u(?:ang|an|ai|a|o)|[vu]an|[aeio]ng)|[aeu]i|[oi]u|[ivu]e|[aeiu]n|ao|er|a|o|e|i|u|v");
private static Pattern shengmu=Pattern.compile(
"(b|p|m|f|d|t|n|l|g|k|h