您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Java怎么實現(xiàn)簡體繁體轉(zhuǎn)換”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Java怎么實現(xiàn)簡體繁體轉(zhuǎn)換”吧!
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; /** * 類名稱:HKTWwordVO * 類描述:香港、臺灣字體庫 * * @author 兮赫 * Created by 2020-08-24 18:52 */ public class HKTWwordVO { /** 所有詞匯 */ private Properties charMap = new Properties(); /** 高頻詞匯 */ private Set<String> conflictingSets = new HashSet<String>(); /** 繁體_臺灣 */ public static final int TAIWAN = 0; /** 繁體_香港 */ public static final int HONGKONG = 1; /** 簡體 */ public static final int SIMPLE = 2; private static final int NUM_OF_CONVERTERS = 3; private static final HKTWwordVO[] converters = new HKTWwordVO[NUM_OF_CONVERTERS]; private static final String[] propertyFiles = new String[NUM_OF_CONVERTERS]; static { propertyFiles[TAIWAN] = "taiwan.properties"; // 臺灣 propertyFiles[HONGKONG] = "hongkong.properties"; // 香港 propertyFiles[SIMPLE] = "simple.properties"; // 簡體 } public static void main(String[] args) { String str = "鉤子里面是關(guān)注"; // 轉(zhuǎn)臺灣繁體 String convert = HKTWwordVO.convert(str, HKTWwordVO.TAIWAN); System.out.println(convert); // 轉(zhuǎn)香港繁體 convert = HKTWwordVO.convert(str, HKTWwordVO.HONGKONG); System.out.println(convert); // 繁體轉(zhuǎn)簡體 String convert2 = HKTWwordVO.convert("鉤子裡面是關(guān)注、鈎子裏面是關(guān)注", HKTWwordVO.SIMPLE); System.out.println(convert2); } /** * * @param converterType * 0 for traditional and 1 for simplified * @return */ public static HKTWwordVO getInstance(int converterType) { if (converterType >= 0 && converterType < NUM_OF_CONVERTERS) { if (converters[converterType] == null) { synchronized (HKTWwordVO.class) { if (converters[converterType] == null) { converters[converterType] = new HKTWwordVO( propertyFiles[converterType]); } } } return converters[converterType]; } else { return null; } } public static String convert(String text, int converterType) { HKTWwordVO instance = getInstance(converterType); return instance.convert(text); } private HKTWwordVO(String propertyFile) { InputStream is = null; is = getClass().getResourceAsStream("/"+propertyFile); // File propertyFile = new // File("C:/Temp/testMDB/TestTranslator/abc.txt"); if (is != null) { BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(is)); charMap.load(reader); } catch (FileNotFoundException e) { } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (reader != null) reader.close(); if (is != null) is.close(); } catch (IOException e) { } } } initializeHelper(); } @SuppressWarnings("rawtypes") private void initializeHelper() { Map<String, Integer> stringPossibilities = new HashMap<String, Integer>(); Iterator iter = charMap.keySet().iterator(); while (iter.hasNext()) { String key = (String) iter.next(); if (key.length() >= 1) { for (int i = 0; i < (key.length()); i++) { String keySubstring = key.substring(0, i + 1); if (stringPossibilities.containsKey(keySubstring)) { Integer integer = (Integer) (stringPossibilities .get(keySubstring)); stringPossibilities.put(keySubstring, new Integer(integer.intValue() + 1)); } else { stringPossibilities.put(keySubstring, new Integer(1)); } } } } iter = stringPossibilities.keySet().iterator(); while (iter.hasNext()) { String key = (String) iter.next(); if (((Integer) (stringPossibilities.get(key))).intValue() > 1) { conflictingSets.add(key); } } } public String convert(String in) { StringBuilder outString = new StringBuilder(); StringBuilder stackString = new StringBuilder(); for (int i = 0; i < in.length(); i++) { char c = in.charAt(i); String key = "" + c; stackString.append(key); if (conflictingSets.contains(stackString.toString())) { } else if (charMap.containsKey(stackString.toString())) { outString.append(charMap.get(stackString.toString())); stackString.setLength(0); } else { CharSequence sequence = stackString.subSequence(0, stackString.length() - 1); stackString.delete(0, stackString.length() - 1); flushStack(outString, new StringBuilder(sequence)); } } flushStack(outString, stackString); return outString.toString(); } private void flushStack(StringBuilder outString, StringBuilder stackString) { while (stackString.length() > 0) { if (charMap.containsKey(stackString.toString())) { outString.append(charMap.get(stackString.toString())); stackString.setLength(0); } else { outString.append("" + stackString.charAt(0)); stackString.delete(0, 1); } } } String parseOneChar(String c) { if (charMap.containsKey(c)) { return (String) charMap.get(c); } return c; } }
到此,相信大家對“Java怎么實現(xiàn)簡體繁體轉(zhuǎn)換”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。