danchaofan1412 4 年 前
コミット
e6d57b53b8

+ 8 - 0
framework-common/pom.xml

@@ -15,10 +15,18 @@
             <version>7.0.11</version>
         </dependency>
 
+        <!-- 汉子转拼音 -->
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
         </dependency>
+
     </dependencies>
     <packaging>jar</packaging>
     <name>framework-common</name>

+ 34 - 0
framework-common/src/main/java/com/mrxu/framework/common/util/StrFunc.java

@@ -1,5 +1,11 @@
 package com.mrxu.framework.common.util;
 
+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.exception.BadHanyuPinyinOutputFormatCombination;
+
 import java.util.Random;
 import java.util.UUID;
 
@@ -121,4 +127,32 @@ public class StrFunc {
         return new String(randBuffer);
     }
 
+
+    private static HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+    static {
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+    }
+    public static String converterToSpell(String chines){
+        if(chines == null) {
+            return null;
+        }
+        StringBuffer pinyinName = new StringBuffer();
+        char[] nameChar = chines.toCharArray();
+        for (int i = 0; i < nameChar.length; i++) {
+            if (nameChar[i] > 128) {
+                try {
+                    pinyinName.append(PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0]);
+                }
+                catch (BadHanyuPinyinOutputFormatCombination e) {
+                    e.printStackTrace();
+                }
+            }
+            else{
+                pinyinName.append(nameChar[i]);
+            }
+        }
+        return pinyinName.toString();
+    }
+
 }