Optimize zhuin

pull/594/head
jhengazuki 2 months ago
parent a16d2204bb
commit 6875f2cb6a
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java
  2. 356
      catvod/src/main/java/com/github/catvod/utils/ZhuToPin.java

@ -21,7 +21,7 @@ public class KeyboardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
private final List<Integer> icons = Arrays.asList(R.drawable.ic_keyboard_remote, R.drawable.ic_keyboard_left, R.drawable.ic_keyboard_right, R.drawable.ic_keyboard_back, R.drawable.ic_keyboard_search, R.drawable.ic_keyboard, R.drawable.ic_setting_home);
private final List<String> enList = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
private final List<String> twList = Arrays.asList("↩", "ㄅ", "ㄆ", "ㄇ", "ㄈ", "ㄉ", "ㄊ", "ㄋ", "ㄌ", "ㄍ", "ㄎ", "ㄏ", "ㄐ", "ㄑ", "ㄒ", "ㄓ", "ㄔ", "ㄕ", "ㄖ", "ㄗ", "ㄘ", "ㄙ", "ㄧ", "ㄨ", "ㄩ", "ㄚ", "ㄛ", "ㄜ", "ㄝ", "ㄞ", "ㄟ", "ㄠ", "ㄡ", "ㄢ", "ㄣ", "ㄤ", "ㄥ", "ㄦ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
private final List<String> twList = Arrays.asList("ㄅ", "ㄆ", "ㄇ", "ㄈ", "ㄉ", "ㄊ", "ㄋ", "ㄌ", "ㄍ", "ㄎ", "ㄏ", "ㄐ", "ㄑ", "ㄒ", "ㄓ", "ㄔ", "ㄕ", "ㄖ", "ㄗ", "ㄘ", "ㄙ", "ㄧ", "ㄨ", "ㄩ", "ㄚ", "ㄛ", "ㄜ", "ㄝ", "ㄞ", "ㄟ", "ㄠ", "ㄡ", "ㄢ", "ㄣ", "ㄤ", "ㄥ", "ㄦ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
private final OnClickListener mListener;
private final List<Object> mItems;

@ -1,19 +1,16 @@
package com.github.catvod.utils;
import android.text.TextUtils;
import java.util.HashMap;
import java.util.Map;
public class ZhuToPin {
private static final int MAX_ZHUYIN_LEN = 3;
private static final Map<String, String> map = new HashMap<>();
static {
map.put("ㄅㄧㄝ", "bie");
map.put("ㄅㄧㄠ", "biao");
map.put("ㄅㄧㄢ", "bian");
map.put("ㄅㄧㄣ", "bin");
map.put("ㄅㄧㄥ", "bing");
map.put("ㄅㄨ", "bu");
map.put("ㄅㄚ", "ba");
map.put("ㄅㄛ", "bo");
map.put("ㄅㄞ", "bai");
@ -24,12 +21,12 @@ public class ZhuToPin {
map.put("ㄅㄤ", "bang");
map.put("ㄅㄥ", "beng");
map.put("ㄅㄧ", "bi");
map.put("ㄆㄧㄝ", "pie");
map.put("ㄆㄧㄠ", "piao");
map.put("ㄆㄧㄢ", "pian");
map.put("ㄆㄧㄣ", "pin");
map.put("ㄆㄧㄥ", "ping");
map.put("ㄆㄨ", "pu");
map.put("ㄅㄧㄝ", "bie");
map.put("ㄅㄧㄠ", "biao");
map.put("ㄅㄧㄢ", "bian");
map.put("ㄅㄧㄣ", "bin");
map.put("ㄅㄧㄥ", "bing");
map.put("ㄅㄨ", "bu");
map.put("ㄆㄚ", "pa");
map.put("ㄆㄛ", "po");
map.put("ㄆㄞ", "pai");
@ -41,12 +38,12 @@ public class ZhuToPin {
map.put("ㄆㄤ", "pang");
map.put("ㄆㄥ", "peng");
map.put("ㄆㄧ", "pi");
map.put("ㄇㄧㄝ", "mie");
map.put("ㄇㄧㄠ", "miao");
map.put("ㄇㄧㄡ", "miu");
map.put("ㄇㄧㄢ", "mian");
map.put("ㄇㄧㄣ", "min");
map.put("ㄇㄨ", "mu");
map.put("ㄆㄧㄝ", "pie");
map.put("ㄆㄧㄠ", "piao");
map.put("ㄆㄧㄢ", "pian");
map.put("ㄆㄧㄣ", "pin");
map.put("ㄆㄧㄥ", "ping");
map.put("ㄆㄨ", "pu");
map.put("ㄇㄚ", "ma");
map.put("ㄇㄛ", "mo");
map.put("ㄇㄜ", "me");
@ -59,9 +56,15 @@ public class ZhuToPin {
map.put("ㄇㄤ", "mang");
map.put("ㄇㄥ", "meng");
map.put("ㄇㄧ", "mi");
map.put("ㄇㄧㄝ", "mie");
map.put("ㄇㄧㄠ", "miao");
map.put("ㄇㄧㄡ", "miu");
map.put("ㄇㄧㄢ", "mian");
map.put("ㄇㄧㄣ", "min");
map.put("ㄇㄧㄥ", "ming");
map.put("ㄇㄨ", "mu");
map.put("ㄈㄚ", "fa");
map.put("ㄈㄛ", "fo");
map.put("ㄈㄜ", "fe");
map.put("ㄈㄟ", "fei");
map.put("ㄈㄡ", "fou");
map.put("ㄈㄢ", "fan");
@ -69,15 +72,6 @@ public class ZhuToPin {
map.put("ㄈㄤ", "fang");
map.put("ㄈㄥ", "feng");
map.put("ㄈㄨ", "fu");
map.put("ㄉㄧㄝ", "die");
map.put("ㄉㄧㄠ", "diao");
map.put("ㄉㄧㄡ", "diu");
map.put("ㄉㄧㄢ", "dian");
map.put("ㄉㄧㄥ", "ding");
map.put("ㄉㄨㄛ", "duo");
map.put("ㄉㄨㄟ", "dui");
map.put("ㄉㄨㄢ", "duan");
map.put("ㄉㄨㄣ", "dun");
map.put("ㄉㄚ", "da");
map.put("ㄉㄜ", "de");
map.put("ㄉㄞ", "dai");
@ -85,19 +79,20 @@ public class ZhuToPin {
map.put("ㄉㄠ", "dao");
map.put("ㄉㄡ", "dou");
map.put("ㄉㄢ", "dan");
map.put("ㄉㄣ", "den");
map.put("ㄉㄤ", "dang");
map.put("ㄉㄥ", "deng");
map.put("ㄉㄧ", "di");
map.put("ㄉㄧㄝ", "die");
map.put("ㄉㄧㄠ", "diao");
map.put("ㄉㄧㄡ", "diu");
map.put("ㄉㄧㄢ", "dian");
map.put("ㄉㄧㄥ", "ding");
map.put("ㄉㄨ", "du");
map.put("ㄊㄧㄝ", "tie");
map.put("ㄊㄧㄠ", "tiao");
map.put("ㄊㄧㄢ", "tian");
map.put("ㄊㄧㄥ", "ting");
map.put("ㄊㄨㄛ", "tuo");
map.put("ㄊㄨㄟ", "tui");
map.put("ㄊㄨㄢ", "tuan");
map.put("ㄊㄨㄣ", "tun");
map.put("ㄉㄨㄛ", "duo");
map.put("ㄉㄨㄟ", "dui");
map.put("ㄉㄨㄢ", "duan");
map.put("ㄉㄨㄣ", "dun");
map.put("ㄉㄨㄥ", "dong");
map.put("ㄊㄚ", "ta");
map.put("ㄊㄜ", "te");
map.put("ㄊㄞ", "tai");
@ -107,18 +102,16 @@ public class ZhuToPin {
map.put("ㄊㄤ", "tang");
map.put("ㄊㄥ", "teng");
map.put("ㄊㄧ", "ti");
map.put("ㄊㄧㄝ", "tie");
map.put("ㄊㄧㄠ", "tiao");
map.put("ㄊㄧㄢ", "tian");
map.put("ㄊㄧㄥ", "ting");
map.put("ㄊㄨ", "tu");
map.put("ㄋㄧㄝ", "nie");
map.put("ㄋㄧㄠ", "niao");
map.put("ㄋㄧㄡ", "niu");
map.put("ㄋㄧㄢ", "nian");
map.put("ㄋㄧㄣ", "nin");
map.put("ㄋㄧㄤ", "niang");
map.put("ㄋㄧㄥ", "ning");
map.put("ㄋㄨㄛ", "nuo");
map.put("ㄋㄨㄢ", "nuan");
map.put("ㄋㄨㄣ", "nun");
map.put("ㄋㄨㄥ", "nung");
map.put("ㄊㄨㄛ", "tuo");
map.put("ㄊㄨㄟ", "tui");
map.put("ㄊㄨㄢ", "tuan");
map.put("ㄊㄨㄣ", "tun");
map.put("ㄊㄨㄥ", "tong");
map.put("ㄋㄚ", "na");
map.put("ㄋㄜ", "ne");
map.put("ㄋㄞ", "nai");
@ -130,7 +123,30 @@ public class ZhuToPin {
map.put("ㄋㄤ", "nang");
map.put("ㄋㄥ", "neng");
map.put("ㄋㄧ", "ni");
map.put("ㄋㄧㄝ", "nie");
map.put("ㄋㄧㄠ", "niao");
map.put("ㄋㄧㄡ", "niu");
map.put("ㄋㄧㄢ", "nian");
map.put("ㄋㄧㄣ", "nin");
map.put("ㄋㄧㄤ", "niang");
map.put("ㄋㄧㄥ", "ning");
map.put("ㄋㄨ", "nu");
map.put("ㄋㄨㄛ", "nuo");
map.put("ㄋㄨㄢ", "nuan");
map.put("ㄋㄨㄥ", "nong");
map.put("ㄋㄩ", "nv");
map.put("ㄋㄩㄝ", "nve");
map.put("ㄌㄚ", "la");
map.put("ㄌㄛ", "lo");
map.put("ㄌㄜ", "le");
map.put("ㄌㄞ", "lai");
map.put("ㄌㄟ", "lei");
map.put("ㄌㄠ", "lao");
map.put("ㄌㄡ", "lou");
map.put("ㄌㄢ", "lan");
map.put("ㄌㄤ", "lang");
map.put("ㄌㄥ", "leng");
map.put("ㄌㄧ", "li");
map.put("ㄌㄧㄚ", "lia");
map.put("ㄌㄧㄝ", "lie");
map.put("ㄌㄧㄠ", "liao");
@ -139,33 +155,13 @@ public class ZhuToPin {
map.put("ㄌㄧㄣ", "lin");
map.put("ㄌㄧㄤ", "liang");
map.put("ㄌㄧㄥ", "ling");
map.put("ㄌㄨ", "lu");
map.put("ㄌㄨㄛ", "luo");
map.put("ㄌㄨㄢ", "luan");
map.put("ㄌㄨㄣ", "lun");
map.put("ㄌㄨㄥ", "lung");
map.put("ㄌㄨㄥ", "long");
map.put("ㄌㄩ", "lv");
map.put("ㄌㄩㄝ", "lve");
map.put("ㄌㄚ", "la");
map.put("ㄌㄛ", "lo");
map.put("ㄌㄜ", "le");
map.put("ㄌㄞ", "lai");
map.put("ㄌㄟ", "lei");
map.put("ㄌㄠ", "lao");
map.put("ㄌㄡ", "lou");
map.put("ㄌㄢ", "lan");
map.put("ㄌㄣ", "len");
map.put("ㄌㄤ", "lang");
map.put("ㄌㄥ", "leng");
map.put("ㄌㄧ", "li");
map.put("ㄌㄨ", "lu");
map.put("ㄍㄨㄚ", "gua");
map.put("ㄍㄨㄛ", "guo");
map.put("ㄍㄨㄞ", "guai");
map.put("ㄍㄨㄟ", "gui");
map.put("ㄍㄨㄢ", "guan");
map.put("ㄍㄨㄣ", "gun");
map.put("ㄍㄨㄤ", "guang");
map.put("ㄍㄨㄥ", "gong");
map.put("ㄍㄚ", "ga");
map.put("ㄍㄜ", "ge");
map.put("ㄍㄞ", "gai");
@ -177,14 +173,14 @@ public class ZhuToPin {
map.put("ㄍㄤ", "gang");
map.put("ㄍㄥ", "geng");
map.put("ㄍㄨ", "gu");
map.put("ㄎㄨㄚ", "kua");
map.put("ㄎㄨㄛ", "kuo");
map.put("ㄎㄨㄞ", "kuai");
map.put("ㄎㄨㄟ", "kui");
map.put("ㄎㄨㄢ", "kuan");
map.put("ㄎㄨㄣ", "kun");
map.put("ㄎㄨㄤ", "kuang");
map.put("ㄎㄨㄥ", "kong");
map.put("ㄍㄨㄚ", "gua");
map.put("ㄍㄨㄛ", "guo");
map.put("ㄍㄨㄞ", "guai");
map.put("ㄍㄨㄟ", "gui");
map.put("ㄍㄨㄢ", "guan");
map.put("ㄍㄨㄣ", "gun");
map.put("ㄍㄨㄤ", "guang");
map.put("ㄍㄨㄥ", "gong");
map.put("ㄎㄚ", "ka");
map.put("ㄎㄜ", "ke");
map.put("ㄎㄞ", "kai");
@ -195,14 +191,14 @@ public class ZhuToPin {
map.put("ㄎㄤ", "kang");
map.put("ㄎㄥ", "keng");
map.put("ㄎㄨ", "ku");
map.put("ㄏㄨㄚ", "hua");
map.put("ㄏㄨㄛ", "huo");
map.put("ㄏㄨㄞ", "huai");
map.put("ㄏㄨㄟ", "huai");
map.put("ㄏㄨㄢ", "huan");
map.put("ㄏㄨㄣ", "hun");
map.put("ㄏㄨㄤ", "huang");
map.put("ㄏㄨㄥ", "hong");
map.put("ㄎㄨㄚ", "kua");
map.put("ㄎㄨㄛ", "kuo");
map.put("ㄎㄨㄞ", "kuai");
map.put("ㄎㄨㄟ", "kui");
map.put("ㄎㄨㄢ", "kuan");
map.put("ㄎㄨㄣ", "kun");
map.put("ㄎㄨㄤ", "kuang");
map.put("ㄎㄨㄥ", "kong");
map.put("ㄏㄚ", "ha");
map.put("ㄏㄜ", "he");
map.put("ㄏㄞ", "hai");
@ -214,6 +210,15 @@ public class ZhuToPin {
map.put("ㄏㄤ", "hang");
map.put("ㄏㄥ", "heng");
map.put("ㄏㄨ", "hu");
map.put("ㄏㄨㄚ", "hua");
map.put("ㄏㄨㄛ", "huo");
map.put("ㄏㄨㄞ", "huai");
map.put("ㄏㄨㄟ", "hui");
map.put("ㄏㄨㄢ", "huan");
map.put("ㄏㄨㄣ", "hun");
map.put("ㄏㄨㄤ", "huang");
map.put("ㄏㄨㄥ", "hong");
map.put("ㄐㄧ", "ji");
map.put("ㄐㄧㄚ", "jia");
map.put("ㄐㄧㄝ", "jie");
map.put("ㄐㄧㄠ", "jiao");
@ -222,12 +227,12 @@ public class ZhuToPin {
map.put("ㄐㄧㄣ", "jin");
map.put("ㄐㄧㄤ", "jiang");
map.put("ㄐㄧㄥ", "jing");
map.put("ㄐㄩ", "ju");
map.put("ㄐㄩㄝ", "jue");
map.put("ㄐㄩㄢ", "juan");
map.put("ㄐㄩㄣ", "jun");
map.put("ㄐㄩㄥ", "jiong");
map.put("ㄐㄧ", "ji");
map.put("ㄐㄩ", "ju");
map.put("ㄑㄧ", "qi");
map.put("ㄑㄧㄚ", "qia");
map.put("ㄑㄧㄝ", "qie");
map.put("ㄑㄧㄠ", "qiao");
@ -236,12 +241,12 @@ public class ZhuToPin {
map.put("ㄑㄧㄣ", "qin");
map.put("ㄑㄧㄤ", "qiang");
map.put("ㄑㄧㄥ", "qing");
map.put("ㄑㄩ", "qu");
map.put("ㄑㄩㄝ", "que");
map.put("ㄑㄩㄢ", "quan");
map.put("ㄑㄩㄣ", "qun");
map.put("ㄑㄩㄥ", "qun");
map.put("ㄑㄧ", "qi");
map.put("ㄑㄩ", "qu");
map.put("ㄑㄩㄥ", "qiong");
map.put("ㄒㄧ", "xi");
map.put("ㄒㄧㄚ", "xia");
map.put("ㄒㄧㄝ", "xie");
map.put("ㄒㄧㄠ", "xiao");
@ -250,20 +255,12 @@ public class ZhuToPin {
map.put("ㄒㄧㄣ", "xin");
map.put("ㄒㄧㄤ", "xiang");
map.put("ㄒㄧㄥ", "xing");
map.put("ㄒㄩ", "xu");
map.put("ㄒㄩㄝ", "xue");
map.put("ㄒㄩㄢ", "xuan");
map.put("ㄒㄩㄣ", "xun");
map.put("ㄒㄩㄥ", "xiong");
map.put("ㄒㄧ", "xi");
map.put("ㄒㄩ", "xu");
map.put("ㄓㄨㄚ", "zhua");
map.put("ㄓㄨㄛ", "zhuo");
map.put("ㄓㄨㄞ", "zhuai");
map.put("ㄓㄨㄟ", "zhuo");
map.put("ㄓㄨㄢ", "zhuan");
map.put("ㄓㄨㄣ", "zhuan");
map.put("ㄓㄨㄤ", "zhuan");
map.put("ㄓㄨㄥ", "zhong");
map.put("ㄓ", "zhi");
map.put("ㄓㄚ", "zha");
map.put("ㄓㄜ", "zhe");
map.put("ㄓㄞ", "zhai");
@ -275,14 +272,15 @@ public class ZhuToPin {
map.put("ㄓㄤ", "zhang");
map.put("ㄓㄥ", "zheng");
map.put("ㄓㄨ", "zhu");
map.put("ㄔㄨㄚ", "chua");
map.put("ㄔㄨㄛ", "chuo");
map.put("ㄔㄨㄞ", "chuai");
map.put("ㄔㄨㄟ", "chui");
map.put("ㄔㄨㄢ", "chuan");
map.put("ㄔㄨㄣ", "chun");
map.put("ㄔㄨㄤ", "chuang");
map.put("ㄔㄨㄥ", "chong");
map.put("ㄓㄨㄚ", "zhua");
map.put("ㄓㄨㄛ", "zhuo");
map.put("ㄓㄨㄞ", "zhuai");
map.put("ㄓㄨㄟ", "zhui");
map.put("ㄓㄨㄢ", "zhuan");
map.put("ㄓㄨㄣ", "zhun");
map.put("ㄓㄨㄤ", "zhuang");
map.put("ㄓㄨㄥ", "zhong");
map.put("ㄔ", "chi");
map.put("ㄔㄚ", "cha");
map.put("ㄔㄜ", "che");
map.put("ㄔㄞ", "chai");
@ -293,13 +291,15 @@ public class ZhuToPin {
map.put("ㄔㄤ", "chang");
map.put("ㄔㄥ", "cheng");
map.put("ㄔㄨ", "chu");
map.put("ㄕㄨㄚ", "shua");
map.put("ㄕㄨㄛ", "shuo");
map.put("ㄕㄨㄞ", "shuai");
map.put("ㄕㄨㄟ", "shui");
map.put("ㄕㄨㄢ", "shuan");
map.put("ㄕㄨㄣ", "shun");
map.put("ㄕㄨㄤ", "shuang");
map.put("ㄔㄨㄚ", "chua");
map.put("ㄔㄨㄛ", "chuo");
map.put("ㄔㄨㄞ", "chuai");
map.put("ㄔㄨㄟ", "chui");
map.put("ㄔㄨㄢ", "chuan");
map.put("ㄔㄨㄣ", "chun");
map.put("ㄔㄨㄤ", "chuang");
map.put("ㄔㄨㄥ", "chong");
map.put("ㄕ", "shi");
map.put("ㄕㄚ", "sha");
map.put("ㄕㄜ", "she");
map.put("ㄕㄞ", "shai");
@ -311,11 +311,14 @@ public class ZhuToPin {
map.put("ㄕㄤ", "shang");
map.put("ㄕㄥ", "sheng");
map.put("ㄕㄨ", "shu");
map.put("ㄖㄨㄛ", "ruo");
map.put("ㄖㄨㄟ", "rui");
map.put("ㄖㄨㄢ", "ruan");
map.put("ㄖㄨㄣ", "run");
map.put("ㄖㄨㄥ", "rung");
map.put("ㄕㄨㄚ", "shua");
map.put("ㄕㄨㄛ", "shuo");
map.put("ㄕㄨㄞ", "shuai");
map.put("ㄕㄨㄟ", "shui");
map.put("ㄕㄨㄢ", "shuan");
map.put("ㄕㄨㄣ", "shun");
map.put("ㄕㄨㄤ", "shuang");
map.put("ㄖ", "ri");
map.put("ㄖㄜ", "re");
map.put("ㄖㄠ", "rao");
map.put("ㄖㄡ", "rou");
@ -324,11 +327,12 @@ public class ZhuToPin {
map.put("ㄖㄤ", "rang");
map.put("ㄖㄥ", "reng");
map.put("ㄖㄨ", "ru");
map.put("ㄗㄨㄛ", "zuo");
map.put("ㄗㄨㄟ", "zui");
map.put("ㄗㄨㄢ", "zuan");
map.put("ㄗㄨㄣ", "zun");
map.put("ㄗㄨㄥ", "zong");
map.put("ㄖㄨㄛ", "ruo");
map.put("ㄖㄨㄟ", "rui");
map.put("ㄖㄨㄢ", "ruan");
map.put("ㄖㄨㄣ", "run");
map.put("ㄖㄨㄥ", "rong");
map.put("ㄗ", "zi");
map.put("ㄗㄚ", "za");
map.put("ㄗㄜ", "ze");
map.put("ㄗㄞ", "zai");
@ -340,11 +344,12 @@ public class ZhuToPin {
map.put("ㄗㄤ", "zang");
map.put("ㄗㄥ", "zeng");
map.put("ㄗㄨ", "zu");
map.put("ㄘㄨㄛ", "cuo");
map.put("ㄘㄨㄟ", "cui");
map.put("ㄘㄨㄢ", "cuan");
map.put("ㄘㄨㄣ", "cun");
map.put("ㄘㄨㄥ", "cong");
map.put("ㄗㄨㄛ", "zuo");
map.put("ㄗㄨㄟ", "zui");
map.put("ㄗㄨㄢ", "zuan");
map.put("ㄗㄨㄣ", "zun");
map.put("ㄗㄨㄥ", "zong");
map.put("ㄘ", "ci");
map.put("ㄘㄚ", "ca");
map.put("ㄘㄜ", "ce");
map.put("ㄘㄞ", "cai");
@ -355,15 +360,15 @@ public class ZhuToPin {
map.put("ㄘㄤ", "cang");
map.put("ㄘㄥ", "ceng");
map.put("ㄘㄨ", "cu");
map.put("ㄙㄨㄛ", "suo");
map.put("ㄙㄨㄟ", "sui");
map.put("ㄙㄨㄢ", "suan");
map.put("ㄙㄨㄣ", "sun");
map.put("ㄙㄨㄥ", "song");
map.put("ㄘㄨㄛ", "cuo");
map.put("ㄘㄨㄟ", "cui");
map.put("ㄘㄨㄢ", "cuan");
map.put("ㄘㄨㄣ", "cun");
map.put("ㄘㄨㄥ", "cong");
map.put("ㄙ", "si");
map.put("ㄙㄚ", "sa");
map.put("ㄙㄜ", "se");
map.put("ㄙㄞ", "sai");
map.put("ㄙㄟ", "sei");
map.put("ㄙㄠ", "sao");
map.put("ㄙㄡ", "sou");
map.put("ㄙㄢ", "san");
@ -371,16 +376,22 @@ public class ZhuToPin {
map.put("ㄙㄤ", "sang");
map.put("ㄙㄥ", "seng");
map.put("ㄙㄨ", "su");
map.put("ㄙㄨㄛ", "suo");
map.put("ㄙㄨㄟ", "sui");
map.put("ㄙㄨㄢ", "suan");
map.put("ㄙㄨㄣ", "sun");
map.put("ㄙㄨㄥ", "song");
map.put("ㄧ", "yi");
map.put("ㄧㄚ", "ya");
map.put("ㄧㄛ", "yo");
map.put("ㄧㄝ", "ye");
map.put("ㄧㄞ", "yai");
map.put("ㄧㄠ", "yao");
map.put("ㄧㄡ", "you");
map.put("ㄧㄢ", "yan");
map.put("ㄧㄣ", "yin");
map.put("ㄧㄤ", "yang");
map.put("ㄧㄥ", "ying");
map.put("ㄨ", "wu");
map.put("ㄨㄚ", "wa");
map.put("ㄨㄛ", "wo");
map.put("ㄨㄞ", "wai");
@ -389,68 +400,37 @@ public class ZhuToPin {
map.put("ㄨㄣ", "wen");
map.put("ㄨㄤ", "wang");
map.put("ㄨㄥ", "weng");
map.put("ㄩ", "yu");
map.put("ㄩㄝ", "yue");
map.put("ㄩㄢ", "yuan");
map.put("ㄩㄣ", "yun");
map.put("ㄩㄥ", "yong");
map.put("ㄅ", "b");
map.put("ㄆ", "p");
map.put("ㄇ", "m");
map.put("ㄈ", "f");
map.put("ㄉ", "d");
map.put("ㄊ", "t");
map.put("ㄋ", "n");
map.put("ㄌ", "l");
map.put("ㄍ", "g");
map.put("ㄎ", "k");
map.put("ㄏ", "h");
map.put("ㄐ", "j");
map.put("ㄑ", "q");
map.put("ㄒ", "x");
map.put("ㄓ", "zh");
map.put("ㄔ", "ch");
map.put("ㄕ", "sh");
map.put("ㄖ", "r");
map.put("ㄗ", "z");
map.put("ㄘ", "c");
map.put("ㄙ", "s");
map.put("ㄧ", "yi");
map.put("ㄨ", "wu");
map.put("ㄩ", "yu");
map.put("ㄚ", "a");
map.put("ㄛ", "o");
map.put("ㄜ", "e");
map.put("ㄝ", "eh");
map.put("ㄞ", "ai");
map.put("ㄟ", "ei");
map.put("ㄠ", "ao");
map.put("ㄡ", "ou");
map.put("ㄢ", "an");
map.put("ㄣ", "en");
map.put("ㄤ", "ang");
map.put("ㄥ", "eng");
map.put("ㄦ", "er");
}
public static String get(String text) {
if (TextUtils.isEmpty(text)) return "";
StringBuilder sb = new StringBuilder();
String[] splits = text.split("↩");
if (splits.length > 1) findSplit(sb, splits);
else findSingle(sb, text);
return sb.toString();
int index = 0;
int length = text.length();
while (index < length) {
boolean matched = false;
for (int len = MAX_ZHUYIN_LEN; len >= 1; len--) {
if (index + len <= length) {
String sub = text.substring(index, index + len);
if (map.containsKey(sub)) {
sb.append(map.get(sub));
index += len;
matched = true;
break;
}
private static void findSplit(StringBuilder sb, String[] splits) {
for (String split : splits) {
String pinyin = map.get(split);
sb.append(pinyin != null ? pinyin : split);
}
}
private static void findSingle(StringBuilder sb, String text) {
for (char chars : text.toCharArray()) {
String pinyin = map.get(String.valueOf(chars));
sb.append(pinyin != null ? pinyin : chars);
if (!matched) {
sb.append(text.charAt(index));
index++;
}
}
return sb.toString();
}
}
Loading…
Cancel
Save