企业邮箱的域名一般都是[email protected]公司域名,或者[email protected]公司域名这种形式。这里我只列举[email protected]公司域名这种形式。
公司要我做一个企业邮箱的模糊匹配和验证,刚接到以为很难。结果网上一查,发现有类似Api。瞬间小case了。
引入jar包:pinyin4j-2.5.0.jar
一下代码是我自己随便写的,应该还可以优化,用了两个循环,因为我们汉子中包含了很多多音字啦。
/**
* 单个汉子检查
* @param chinese
* @return
*/
public static boolean checkSpell(String chinese,String mailAccount) {
boolean result = false;
try {
//设置转换格式
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 设置大小写
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 设置无声调表示
char[] arr = chinese.toCharArray();
for (int j = 0; j < arr.length; j++) {
result = false;
//调用拼音Api
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(arr[j], defaultFormat);
for (int i = 0; i < pinyin.length; i++) {
//符合条件直接跳出循环
if(mailAccount.startsWith(pinyin[i])){
mailAccount = mailAccount.substring(mailAccount.indexOf(pinyin[i])+pinyin[i].length());
result = true;
break;
}
}
if(result == true){
continue;
}
return result;
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
boolean result = checkSpell("长兴薄", "[email protected]");
System.out.println(result);
result = checkSpell("长兴薄", "[email protected]");
System.out.println(result);
result = checkSpell("长兴薄", "[email protected]");
System.out.println(result);
result = checkSpell("长兴薄", "[email protected]");
System.out.println(result);
result = checkSpell("长兴薄", "[email protected]");
}
版权所有,转载请注明出处。