java根據漢字轉拼音,多音字人工處理,資料庫表字段型別為nvarchar,其它要亂碼
阿新 • • 發佈:2019-02-15
package com.zsjz.utils.tools;
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;
/**
* 漢字轉拼音 多音字,人工處理
* @author 小啊剛
*/
public class Pinyin {
public static String pinyin(char word) {
String listPinyin = "";
if (Character.toString(word).matches("[\\u4E00-\\u9FA5]+")) {
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
String[] py = PinyinHelper.toHanyuPinyinStringArray(word);
char ch = (py[0].substring(py[0].length() - 1, py[0].length()))
.toCharArray()[0];
if (ch >= '0' && ch <= '9') {
outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
} else {
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
}
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
try {
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(word,
outputFormat);
for (int i = 0; i < pinyin.length; i++) {
System.out.println(pinyin[i]);
listPinyin = listPinyin + pinyin[i];
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}
return listPinyin;
}
public static String getPinYin(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
char[] input = inputString.trim().toCharArray();
StringBuffer output = new StringBuffer("");
try {
for (int i = 0; i < input.length; i++) {
if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
String py = "";
for (int k = 0; k < temp.length; k++) {
py = py + temp[k];
}
output.append(py);
output.append(" ");
} else {
output.append(input[i]);
output.append(" ");
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return output.toString();
}
public static void main(String[] args) {
String temps = "aaa bbb ccc";
String arrays[] = temps.split(" ");
for (int i = 0; i < arrays.length; i++)
System.out.println(arrays[i] + " ");
}
}
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;
/**
* 漢字轉拼音 多音字,人工處理
* @author 小啊剛
*/
public class Pinyin {
public static String pinyin(char word) {
String listPinyin = "";
if (Character.toString(word).matches("[\\u4E00-\\u9FA5]+")) {
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
String[] py = PinyinHelper.toHanyuPinyinStringArray(word);
char ch = (py[0].substring(py[0].length() - 1, py[0].length()))
.toCharArray()[0];
if (ch >= '0' && ch <= '9') {
outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
} else {
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
}
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
try {
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(word,
outputFormat);
for (int i = 0; i < pinyin.length; i++) {
System.out.println(pinyin[i]);
listPinyin = listPinyin + pinyin[i];
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}
return listPinyin;
}
public static String getPinYin(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
char[] input = inputString.trim().toCharArray();
StringBuffer output = new StringBuffer("");
try {
for (int i = 0; i < input.length; i++) {
if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
String py = "";
for (int k = 0; k < temp.length; k++) {
py = py + temp[k];
}
output.append(py);
output.append(" ");
} else {
output.append(input[i]);
output.append(" ");
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return output.toString();
}
public static void main(String[] args) {
String temps = "aaa bbb ccc";
String arrays[] = temps.split(" ");
for (int i = 0; i < arrays.length; i++)
System.out.println(arrays[i] + " ");
}
}