首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 獲取中文拼音、首字母縮寫與首字母完整示例

     編輯:Java 相關知識

前言

在 Java 開發中,經常需要將中文字符轉換為拼音全拼、首字母縮寫或單個首字母(如「廣東省」→「guangdongsheng」/「gds」/「G」)。本文將基於 pinyin4j 庫,完整演示三種常見場景的實現代碼,供開發者參考。

1. 專案準備與依賴引入

首先建立一個普通 Java 專案,在專案根目錄下建立 libs 資料夾,並放入 pinyin4j-2.5.0.jar(或更新版本)。隨後在 IDE 中將該 JAR 加入 Build Path,即可開始編碼。

2. 獲取中文全拼(如:廣東省 → guangdongsheng)

import net.sourceforge.pinyin4j.*;
import net.sourceforge.pinyin4j.format.*;

public static String getPingYin(String src) {
    char[] chars = src.toCharArray();
    HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
    format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
    format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    format.setVCharType(HanyuPinyinVCharType.WITH_V);

    StringBuilder sb = new StringBuilder();
    for (char c : chars) {
        if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {
            try {
                String[] pinyinArr = PinyinHelper.toHanyuPinyinStringArray(c, format);
                if (pinyinArr != null && pinyinArr.length > 0) {
                    sb.append(pinyinArr[0]);
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
        } else {
            sb.append(c); // 非漢字原樣保留
        }
    }
    return sb.toString();
}

關鍵點:
• 使用 HanyuPinyinOutputFormat 控制輸出為小寫、無聲調、v 代表 ü。
• 逐字符判斷是否為漢字(Unicode 範圍 \u4E00-\u9FA5),非漢字直接拼接。

3. 獲取中文首字母縮寫(如:廣東省 → gds)

public static String getPinYinHeadChar(String str) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        String[] pinyinArr = PinyinHelper.toHanyuPinyinStringArray(c);
        if (pinyinArr != null && pinyinArr.length > 0) {
            sb.append(pinyinArr[0].charAt(0)); // 取首字母
        } else {
            sb.append(c);
        }
    }
    return sb.toString();
}

此處直接呼叫無參數的 toHanyuPinyinStringArray,預設輸出小寫無聲調,取每個拼音的第一個字符即可。

4. 獲取單個首字母並轉大寫(如:廣東省 → G)

String fullInitials = getPinYinHeadChar("廣東省"); // "gds"
if (fullInitials.length() > 0) {
    char first = Character.toUpperCase(fullInitials.charAt(0));
    System.out.println("首字母大寫:" + first); // G
}

結合步驟 3 的結果,僅保留第一個字符並轉為大寫,適合用於索引分組、首字母導航等場景。

總結

以上三個工具方法涵蓋了中文轉拼音的常見需求。實際專案中建議將其封裝為 PinyinUtils 工具類,並針對多音字、特殊符號做進一步容錯處理。完整代碼已在生產環境驗證,可直接引用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved