PinYin4j和jequery.ui实现智能提示首字母、全拼、中文检索
Pinyin4j的使用主要是将中文汉字转换为拼音,一般使用PinyinHelper类的静态方法转换即可:
如:Stringpinyin[ ]=PinyinHelper.toHanyuPinyinStringArray(‘拼’);返回的数组为该字符的拼音,即pinyin[0]=pin1,数字1为声调。之所以返回为数组,因为被判断的汉字可能有多个读音。如果输入的参数不是汉字,则返回null。
对于拼音的转换结果有一些特殊的格式要求,我们可以创建格式化对象
HanyuPinyinOutputFormat,例如:HanyuPinyinOutputFormat format=new
HanyuPinyinOutputFormat();然后分别调用format的set方法设置一些格式。
目前pinyin4j支持的格式有:
声调的格式化,例:“拼”字的拼音格式输出有“pin”或“pin1”或“pīn”。
format.setToneType(HanyuPinyinToneType)设置声调格式,方法参数有以下常量对象:
HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示
HanyuPinyinToneType.WITH_TONE_NUMBER用数字表示声调
HanyuPinyinToneType.WITHOUT_TONE无声调表示
对特殊拼音ü的显示格式,例:“u:”或“ü”或“v”。
format.setVCharType(HanyuPinyinVCharType)设置特殊拼音ü的显示格式,方法参数有以下常量对象:
HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音
HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示
HanyuPinyinVCharType.WITH_V 以V表示该字符
大小写的转化,例:“pin1”或“PIN1”。
format.setCaseType(HanyuPinyinCaseType); HanyuPinyinCaseType.LOWERCASE 转换后以全小写方式输出
HanyuPinyinCaseType.UPPERCASE 转换后以全大写方式输出
设置好格式对象后还是利用上述的工具类方法进行拼音转换,只不过需要将格式化对象当方法参数传入转换方法,告知要转换的格式要求:
String[]pinyin=PinyinHelper.toHanyuPinyinStringArray(‘刘’,outputFormat); 但该方法会有异常抛出,注意处理。
以下例子就是一个汉字转拼音首字母和全拼的例子:
需引入pinyin4j.jar包
后台将汉字以及转换的拼音,拼音首字母以map反馈给前台,代码如下:
前台搜索框代码:
需引入jquery-ui.js。
前台拿到map,通过指定source为自定义函数,对map进行处理来实现自定义数据的获取,函数主要有2个参数(request,response),分别用于获取输入的值、呈现结果
代码如下:
具体实现效果如下: