温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java怎么实现简体繁体转换

发布时间:2021-11-30 14:07:09 来源:亿速云 阅读:431 作者:iii 栏目:大数据

本篇内容主要讲解“Java怎么实现简体繁体转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现简体繁体转换”吧!

新建工具类:HKTWwordVO
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 = "钩子里面是关注";         // 转台湾繁体         String convert = HKTWwordVO.convert(str, HKTWwordVO.TAIWAN);         System.out.println(convert);         // 转香港繁体         convert = HKTWwordVO.convert(str, HKTWwordVO.HONGKONG);         System.out.println(convert);         // 繁体转简体         String convert2 = HKTWwordVO.convert("鉤子裡面是關注、鈎子裏面是關注", 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怎么实现简体繁体转换”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI