2022-07-11 16:08

汉字转换成拼音

码自答

JavaEE

(799)

(0)

收藏

1 下载pinyin.jar

    image.png

  下载jar包


2 Controller代码

   字符串中间可能会有多个汉字,需要逐一将字符串中间的每个字符依次转换成拼音。所以需要根据字符串中间的字符数多次转换。

   某些汉字会有多个读音,多音字,所以将字符转换成拼音的时候,可能会出现多个读音,所以返回一个数组,数组的每个元素是汉字的一个读音.

   在字符串中间可能会出现符号或者数字等,不能转换成拼音的内容,所以转换结束,需要判断转换是否成功,如果不成功,本次转换放弃,可以直接执  行其他的转换.

代码:

package com.wanmait.pinyin.servlet;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "TestServlet", value = "/TestServlet")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");//设置request的编码 否则中文可能会乱码
        response.setCharacterEncoding("utf-8");//设置response的编码

        String content = request.getParameter("content");//获得表单输入的字符串

        //取汉字的拼音
        HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();//创建转换品应的格式对象
        //设置汉语拼音类型
        hanyuPinyinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);//拼音小写
        hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//不标声调
        hanyuPinyinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);//u的声母替换成v

        //content是输入的字符串  content.length()字符串的长度
        for(int i=0;i<content.length();i++)//每个汉字循环一次
        {
            try {
                String array[] = PinyinHelper.toHanyuPinyinStringArray(content.charAt(i),hanyuPinyinOutputFormat);
                //一个汉字转换成拼音 数组的每个元素是一个拼音 如果汉字是多音字  数组才会出现多个元素

                if(array==null||array.length==0)//其中某个字符不能转换拼音
                {
                    continue;
                }

                //输出拼音  只取第一个发音
                response.getWriter().write(array[0]);
            } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
                badHanyuPinyinOutputFormatCombination.printStackTrace();
            }
        }
    }
}


执行结果:

image.png

image.png

0条评论

点击登录参与评论