How to realize the conversion between simplified and traditional Chinese by Java
This article mainly explains "how to transform simplified to traditional Chinese by Java". Interested friends may wish to have a look. The method introduced in this paper is simple, fast and practical. Let's let the editor take you to learn "how to transform simplified to traditional Chinese by Java".
Create a new tool class: HKTWwordVOimport 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 / * Class name: HKTWwordVO * Class description: Hong Kong and Taiwan font * * @ author * Created by 2020-08-24 18:52 * / public class HKTWwordVO {/ * all words * / private Properties charMap = new Properties (); / * High frequency vocabulary * / private Set conflictingSets = new HashSet (); / * traditional _ Taiwan * / public static final int TAIWAN = 0 / * * traditional _ Hong Kong * / public static final int HONGKONG = 1; / * * simplified * / 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" / / Taiwan propertyFiles [HONGKONG] = "hongkong.properties"; / / Hong Kong propertyFiles [SIMPLE] = "simple.properties"; / / simplified} public static void main (String [] args) {String str = "attention in the hook"; / / Taiwan traditional String convert = HKTWwordVO.convert (str, HKTWwordVO.TAIWAN); System.out.println (convert) / / transfer Hong Kong traditional convert = HKTWwordVO.convert (str, HKTWwordVO.HONGKONG); System.out.println (convert); / / traditional transformed simplified 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 stringPossibilities = new HashMap(); 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;} at this point, I believe you have a deeper understanding of "how to transform simplified to traditional Chinese by Java". You might as well do it in practice! Here is the website, more related content can enter the relevant channels to inquire, follow us, continue to learn!