校验字符串是否是汉语拼音

校验字符串是否是汉语拼音

verifyQuanPin1参考路径 : https://github.com/nodejh/nodejh.github.io/issues/8

public static List<String> verifyQuanPin1(String pinYin,List<String> arrayList){
		//获取新华字典拼音全拼
		List<String> quanPinList = getQuanPinList();
		//pinYing转换成全部小写
		String pinYingLowercase  = pinYin.toLowerCase();
		int wordIndex = -1;
		//排在后面的音节总是最优的音节,所以使用 lastIndexOf() 对数组从后往前筛选
		for (int i = 0; i < pinYin.length(); i++) {
			String name  = pinYingLowercase.substring(0, i + 1);
			wordIndex = quanPinList.lastIndexOf(name) > wordIndex ? quanPinList.lastIndexOf(name ) : wordIndex;
		}
		if(wordIndex>=0){
			String s = quanPinList.get(wordIndex);
			pinYingLowercase = pinYin.substring(s.length());
			if (pinYingLowercase.length() == 0) {
				arrayList.add(s);
				System.out.println(arrayList);
				return arrayList;
			}else {
				arrayList.add(s);
				return verifyQuanPin1(pinYingLowercase,arrayList);
			}
		}else {
			System.out.println("无");
			return null;
		}
	}

verifyQuanPin2方法为原创

public static List<String> verifyQuanPin2(String pinYin){
		//获取新华字典拼音全拼
		List<String> quanPinList = getQuanPinList();
		//pinYing转换成全部小写
		String pinYingLowercase  = pinYin.toLowerCase();
		List<String> arrayList = new ArrayList<String>();
		for (int i = 0; i < quanPinList.size(); i++) {
			String quanPin = quanPinList.get(i);
			if (pinYingLowercase.startsWith(quanPin)){
				String quanPins = pinYingLowercase.substring(quanPin.length());
				if (quanPins.length() == 0) {
					arrayList.add(quanPin);
					return arrayList;
				}else{
					List<String> result = verifyQuanPin2(quanPins);
					if(result != null && result.size()>0){
						arrayList.add(quanPin);
						arrayList.addAll(result);
						return arrayList;
					}
				}
			}
		}
		return null;
	}
public static List<String> getQuanPinList(){
		String quanPin[]={"a","ai","an","ang","ao"
				,"ba","bai","ban","bang","bao","bei","ben","beng","bi","bian","biao","bie","bin","bing","bo","bu"
				,"ca","cai","can","cang","cao","ce","cei","cen","ceng","cha","chai","chan","chang","chao","che","chen","cheng","chi","chong","chou","chu","chua","chuai","chuan","chuang","chui","chun","chuo","ci","cong","cou","cu","cuan","cui","cun","cuo"
				,"da","dai","dan","dang","dao","de","den","dei","deng","di","dia","dian","diao","die","ding","diu","dong","dou","du","duan","dui","dun","duo"
				,"e","ei","en","eng","er"
				,"fa","fan","fang","fei","fen","feng","fo","fou","fu"
				,"ga","gai","gan","gang","gao","ge","gei","gen","geng","gong","gou","gu","gua","guai","guan","guang","gui","gun","guo"
				,"ha","hai","han","hang","hao","he","hei","hen","heng","hong","hou","hu","hua","huai","huan","huang","hui","hun","huo"
				,"ji","jia","jian","jiang","jiao","jie","jin","jing","jiong","jiu","ju","juan","jue","jun"
				,"ka","kai","kan","kang","kao","ke","ken","keng","kong","kou","ku","kua","kuai","kuan","kuang","kui","kun","kuo"
				,"la","lai","lan","lang","lao","le","lei","leng","li","lia","lian","liang","liao","lie","lin","ling","liu","long","lou","lu","lv","luan","lve","lun","luo"
				,"m","ma","mai","man","mang","mao","me","mei","men","meng","mi","mian","miao","mie","min","ming","miu","mo","mou","mu"
				,"na","nai","nan","nang","nao","ne","nei","nen","neng","ng","ni","nian","niang","niao","nie","nin","ning","niu","nong","nou","nu","nv","nuan ","nve","nuo","nun"
				,"o","ou"
				,"pa","pai","pan","pang","pao","pei","pen","peng","pi","pian","piao","pie","pin","ping","po","pou","pu"
				,"qi","qia","qian","qiang","qiao","qie","qin","qing","qiong","qiu","qu","quan","que","qun"
				,"ran","rang","rao","re","ren","reng","ri","rong","rou","ru","ruan","rui","run","ruo"
				,"sa","sai","san","sang","sao","se","sen","seng","sha","shai","shan","shang","shao","she","shei","shen","sheng","shi","shou","shu","shua","shuai","shuan","shuang","shui","shun","shuo","si","song","sou","su","suan","sui","sun","suo"
				,"ta","tai","tan","tang","tao","te","teng","ti","tian","tiao","tie","ting","tong","tou","tu","tuan","tui","tun","tuo"
				,"wa","wai","wan","wang","wei","wen","weng","wo","wu"
				,"xi","xia","xian","xiang","xiao","xie","xin","xing","xiong","xiu","xu","xuan","xue","xun"
				,"ya","yan","yang","yao","ye","yi","yin","ying","yo","yong","you","yu","yuan","yue","yun"
				,"za","zai","zan","zang","zao","ze","zei","zen","zeng","zha","zhai","zhan","zhang","zhao","zhe","zhei","zhen","zheng","zhi","zhong","zhou","zhu","zhua","zhuai","zhuan","zhuang","zhui","zhun","zhuo","zi","zong","zou","zu","zuan","zui","zun","zuo"};
		List<String> quanPinList = Arrays.asList(quanPin);
		Collections.sort(quanPinList,new Comparator<String>(){
			@Override
			public int compare(String o1, String o2) {
				return o2.length()-o1.length();
			}
		});
		return quanPinList;
	}
//TEST
public static void main(String[] args) {
		List<String> arrayList = new ArrayList<String>();
		//判断为不是拼音
		verifyQuanPin1("lixingu",arrayList);
		//判断["li","xin","gu"]
		verifyQuanPin2("lixingu",arrayList);
	}
public static String getPinYin(String src) throws Exception {
		HanyuPinyinOutputFormat outputFormat=new HanyuPinyinOutputFormat();
		outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		String result = PinyinHelper.toHanYuPinyinString(src, outputFormat, "", true);
		return result;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值