Files
TimiServerAPI/src/main/java/com/imyeyu/api/util/PinyinUtil.java
T
2026-08-21 13:51:26 +08:00

64 lines
1.4 KiB
Java

package com.imyeyu.api.util;
import me.majiajie.tinypinyin.Pinyin;
import java.util.Locale;
/// 拼音搜索工具
///
/// @author Codex
/// @since 2026-08-21
public final class PinyinUtil {
private PinyinUtil() {
}
/// 转换为无声调全拼
///
/// @param value 原始文字
/// @return 无声调全拼
public static String full(String value) {
return convert(value, false, false);
}
/// 转换为拼音首字母
///
/// @param value 原始文字
/// @return 拼音首字母
public static String initial(String value) {
return convert(value, true, false);
}
/// 转换为首字全拼、后续字首字母的混合拼音
///
/// @param value 原始文字
/// @return 混合拼音
public static String mixed(String value) {
return convert(value, false, true);
}
private static String convert(String value, boolean initial, boolean mixed) {
if (value == null) {
return null;
}
StringBuilder result = new StringBuilder(value.length());
boolean first = true;
for (char character : value.toCharArray()) {
if (Character.isWhitespace(character)) {
continue;
}
String pinyin = Pinyin.toPinyin(character).toLowerCase(Locale.ROOT);
if (pinyin.isEmpty()) {
continue;
}
if (initial || (mixed && !first)) {
result.append(pinyin.charAt(0));
} else {
result.append(pinyin);
}
first = false;
}
return result.toString();
}
}