拼音转换类

来源:互联网 发布:阿里云金牌服务商 编辑:程序博客网 时间:2024/05/01 20:15
import java.io.UnsupportedEncodingException;/** * 拼音转换类 *  * @author   *  */public class CnToSpellUtil {/** * 将字符串转换为拼音 *  * @param cnStr *            要转换的内容 * @return 拼音 */public static String toSpell(String cnStr) {if (StringUtil.isEmpty(cnStr))return cnStr;char[] chars = cnStr.toCharArray();StringBuffer retuBuf = new StringBuffer();for (int i = 0, Len = chars.length; i < Len; i++) {String ascii = getCnAscii(chars[i]);if (ascii.length() == 0) {retuBuf.append(chars[i]);} else {String spell = getSpellByAscii(ascii);if (spell == null) {char firstChar = chars[i];if ((firstChar >= 48 && firstChar <= 57)|| (firstChar >= 65 && firstChar <= 90)|| (firstChar >= 97 && firstChar <= 122)) {retuBuf.append(firstChar);}} else {retuBuf.append(spell);}}}return retuBuf.toString();}/** * 将每个分词的首字符转换为拼音 *  * @param cnStr *            要转换的内容 * @return 各分词首字母拼音 */public static String getFirstSpell(String cnStr) {if (StringUtil.isEmpty(cnStr))return cnStr;char[] chars = cnStr.toCharArray();StringBuffer retuBuf = new StringBuffer();for (int i = 0, Len = chars.length; i < Len; i++) {String ascii = getCnAscii(chars[i]);char firstChar;if (ascii.length() == 1) {firstChar = chars[i];} else {String spell = getSpellByAscii(ascii);if (spell == null || "".equals(cnStr.trim())) {firstChar = chars[i];} else {try {firstChar = spell.charAt(0);} catch (Exception e) {firstChar = " ".toCharArray()[0];// e.printStackTrace();}}}if ((firstChar >= 48 && firstChar <= 57)|| (firstChar >= 65 && firstChar <= 90)|| (firstChar >= 97 && firstChar <= 122)) {retuBuf.append(firstChar);}}return retuBuf.toString();}/** * 将字符串的首字母转换为拼音 *  * @param cnStr *            要转换的内容 * @return 首字母拼音 */public static String getFirstWordSpell(String cnStr) {if (StringUtil.isEmpty(cnStr))return cnStr;char[] chars = cnStr.toCharArray();for (int i = 0, Len = chars.length; i < Len; i++) {String ascii = getCnAscii(chars[i]);if (ascii.length() == 1) {return ascii;} else {String spell = getSpellByAscii(ascii);if (spell == null || "".equals(cnStr.trim())) {continue;} else {return String.valueOf(spell.charAt(0));}}}return "";}private static String getCnAscii(char cn) {byte[] bytes;try {bytes = (String.valueOf(cn)).getBytes("GBK");if (bytes == null || bytes.length > 2 || bytes.length <= 0) {return "";}if (bytes.length == 1) {return new String(bytes);}if (bytes.length == 2) {int hightByte = 256 + bytes[0];int lowByte = 256 + bytes[1];String ascii = hightByte + "-" + lowByte;return ascii;}} catch (UnsupportedEncodingException e) {return "";}return "";}private static String getSpellByAscii(String ascii) {if (ascii.indexOf("-") > -1) {return (String) CnAsciiLib.spellMap.get(ascii);} else {return ascii;}}}


原创粉丝点击