java如何将汉字转换为拼音_将汉字转换为汉语拼音java实现

龙涵蓄
2023-12-01

有的时候我们需要将中文转换成汉语拼音,将汉字转换成汉语拼音其实挺简单。首先我找到了一个资源,是一个XML文件:TBL_Dict.xml ,这个文件中每个汉字作为一个节点,该节点下有该汉字对应的汉语拼音,我的方法就是读取这个文件。

import java.util.List;

import org.dom4j.Element;

import com.yesoft.jdbcgeneric.constant.ConstantEnum;

public class HzChangeToPy {

/**

* 将中文字符串转换成汉语拼音

* @param wenzi

* @return

*/

public String toPinYin(String wenzi){

//XMLReader是一个读取xml文件的工具类,getRootElement()是将读取的xml文件内容返回为Element类型,这里我们解析xml使用的是dom4j。

XMLReader xmlReader = new XMLReader(ConstantEnum.PINYINXML.toString());

Element commonElement = xmlReader.getRootElement();

//Element wenziElement = commonElement.element("NewDataSet");

String pyStr = "";

List wenziList = commonElement.elements();

String[] str = chai(wenzi);

for(int i = 0;i < str.length;i++){

for (Element el : wenziList) {

String name = el.elementText("wenzi");

if (name.equals(str[i])) {

pyStr += el.elementText("zimu");

}

}

}

return pyStr;

}

/**

* 将中文字符串拆解为单个字的数组

* @param wenzi

* @return

*/

public String[] chai(String wenzi){

int length = wenzi.length();

String[] str = new String[length];

for(int i = 0;i

str[i] = wenzi.substring(i,i+1);

}

return str;

}

public static void main(String[] args){

HzChangeToPy py = new HzChangeToPy();

String srt = py.toPinYin("张三");

System.out.println(srt);

}

}      这样张三就能转换成zhangsan了。下面是读取文件的工具类:

package com.yesoft.jdbcgeneric.utils;

import java.io.File;

import java.net.URLDecoder;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import com.yesoft.jdbcgeneric.job.ScanDataSourceCountJob;

public class XMLReader {

private Document xmlDoc;//

private Element root;//

private String fileName;

PropertiesUtil pu = new PropertiesUtil();

public XMLReader(String fileName) {

this.fileName = fileName;

readFile();

}

private Document readFile() {

try {

if (xmlDoc == null) {

String xmlClassPath = pu.readValueV("pyXmlPath");

// 使用SAXReader方式读取XML文件

SAXReader saxReader = new SAXReader();

String resourceListXmlPath = xmlClassPath + fileName;

String realPath_resourceListXmlPath = ScanDataSourceCountJob.class

.getResource(resourceListXmlPath).getFile();

realPath_resourceListXmlPath = URLDecoder.decode(realPath_resourceListXmlPath,"UTF-8");

File file = new File(realPath_resourceListXmlPath);

// InputStream in =

// ResourceXmlReader.class.getResourceAsStream(fileName);

// 加载数据库XML配置文件,得到Document对象

// xmlDoc = saxReader.read(in);

xmlDoc = saxReader.read(file);

}

} catch (Exception e) {

e.printStackTrace();

}

return xmlDoc;

}

public Document getXmlDoc() {

return xmlDoc;

}

public void setXmlDoc(Document xmlDoc) {

this.xmlDoc = xmlDoc;

}

public Element getRootElement() {

if (root == null) {

root = xmlDoc.getRootElement();

}

return root;

}

}

 类似资料: