读书人

创办Grails的中文拼音转换服务

发布时间: 2012-08-29 08:40:14 作者: rapoo

创建Grails的中文拼音转换服务
实现代码:

package utilityimport net.sourceforge.pinyin4j.PinyinHelperimport net.sourceforge.pinyin4j.format.*class PinyinService {    static transactional = falsestatic hanYuPinOutputFormat=nulldef init(){hanYuPinOutputFormat = new HanyuPinyinOutputFormat();    hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);    hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE)    hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);}//如: convertToList("福州")=["fu", "zhou"]    def convertToList(String chinese) {if(hanYuPinOutputFormat==null) init()    def pinyin = []    chinese.getChars().each {        if(it > 128)        {            pinyin.add( PinyinHelper.toHanyuPinyinStringArray(it,hanYuPinOutputFormat)[0])        }    }    return pinyin    }//如: convertToString("福州")="FuZhou"def convertToString(String chinese) {    if(hanYuPinOutputFormat==null) init()    def pinyin = ""    chinese.getChars().each {        if(it > 128)        {            pinyin=pinyin+ (PinyinHelper.toHanyuPinyinStringArray(it,hanYuPinOutputFormat)[0]).capitalize()        }    }    return pinyin    }//如: convertToAbbreviationString("福州")="FZ"def convertToAbbreviationString(String chinese) {    if(hanYuPinOutputFormat==null) init()    def pinyin = ""    chinese.getChars().each {        if(it > 128)        {            pinyin=pinyin+ PinyinHelper.toHanyuPinyinStringArray(it,hanYuPinOutputFormat)[0][0].capitalize()        }    }    return pinyin    }}


测试代码:

class BootStrap {def pinyinService    def init = { servletContext ->        println "Start pinyin testing:"    println "中国福州 to list:"+"    "+pinyinService.convertToList("中国福州")println "中国福州 to string:"+"    "+pinyinService.convertToString("中国福州")println "中国福州 to abbreviation string:"+"    "+pinyinService.convertToAbbreviationString("中国福州")    println "End pinyin testing."    }    def destroy = {    }}


运行结果:

Start pinyin testing:中国福州 to list:    [zhong, guo, fu, zhou]中国福州 to string:    ZhongGuoFuZhou中国福州 to abbreviation string:    ZGFZEnd pinyin testing.


感谢pinyin4j作者:Li Min (xmlerlimin@gmail.com)

读书人网 >网络基础

热点推荐