黑马程序员技术交流社区
标题:
【西安校区】java获取中文串拼音或拼音首字母
[打印本页]
作者:
逆风TO
时间:
2019-10-30 13:29
标题:
【西安校区】java获取中文串拼音或拼音首字母
例一:获取中文拼音首字母
中华人民共和国万岁!
zhrmghgws!
例二:获取中文拼音
我爱你中国!
woainizhongguo!
引入如下jar包:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
创建工具类PinYinUtil:
import net.sourceforge.pinyin4j.PinyinHelper;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
/***
* 获取中文串拼音或拼音首字母
* @author 杨红杰
* @date 2018/12/25
*/
public class PinYinUtil {
private PinYinUtil() {}
/**
* 获取中文拼音首字母,其他字符不变
*
* @param str
* @return String
*/
public static String getShortPinyin(String str) {
return getShortPinyin(str, true);
}
/**
* 获取中文拼音首字母
* @param str
* @param retain 为true保留其他字符
* @return String
*/
public static String getShortPinyin(String str, boolean retain) {
return getPinyin(str, true, retain);
}
/**
* 获取中文拼音,其他字符不变
*
* @param str
* @return String
*/
public static String getFullPinyin(String str) {
return getFullPinyin(str, true);
}
/**
* 获取中文拼音
* @param str
* @param retain 为true保留其他字符
* @return String
*/
public static String getFullPinyin(String str, boolean retain) {
return getPinyin(str, false, retain);
}
/**
* 获取中文拼音
*
* @param str
* @param shortPinyin 为true获取中文拼音首字母
* @param retain 为true保留其他字符
* @return String
*/
private static String getPinyin(String str, boolean shortPinyin, boolean retain) {
if (StringUtils.isBlank(str)) {
return "";
}
StringBuffer pinyinBuffer = new StringBuffer();
char[] arr = str.toCharArray();
for (char c : arr) {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(c);
if (ArrayUtils.isNotEmpty(temp)) {
if (StringUtils.isNotBlank(temp[0])) {
if (shortPinyin) {
pinyinBuffer.append(temp[0].charAt(0));
} else {
pinyinBuffer.append(temp[0].replaceAll("\\d", ""));
}
}
} else {
if (retain) {
pinyinBuffer.append(c);
}
}
}
return pinyinBuffer.toString();
}
public static void main(String[] args) {
String str = "中华人民共和国万岁!";
System.out.println("例一:获取中文拼音首字母");
System.out.println(str);
System.out.println(getShortPinyin(str));
str = "我爱你中国!";
System.out.println("例二:获取中文拼音");
System.out.println(str);
System.out.println(getFullPinyin(str));
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2