From 481431c8e3473066096bc09a4158ff7a70956be4 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Tue, 10 May 2022 18:35:18 +0800 Subject: [PATCH] UPE // Optimize data handling process. --- UserPhraseEditor/StringExtension.swift | 882 ++++++++++++------------- 1 file changed, 435 insertions(+), 447 deletions(-) diff --git a/UserPhraseEditor/StringExtension.swift b/UserPhraseEditor/StringExtension.swift index e05e1661..946852e8 100644 --- a/UserPhraseEditor/StringExtension.swift +++ b/UserPhraseEditor/StringExtension.swift @@ -60,448 +60,440 @@ extension String { if strProcessed.suffix(1) == " " { // 去除檔案結尾空格 strProcessed.removeLast() } - var arrData = [""] if cnvHYPYtoBPMF { - // Step 0: Convert HanyuPinyin to Bopomofo. - arrData = strProcessed.components(separatedBy: "\n") - strProcessed = "" // Reset its value - for lineData in arrData { - var varLineData = lineData - // 漢語拼音轉注音,得先從最長的可能的拼音組合開始轉起, - // 這樣等轉換到更短的可能的漢語拼音組合時就不會出錯。 - // 依此類推,聲調放在最後來轉換。 - varLineData.selfReplace("chuang", "ㄔㄨㄤ") - varLineData.selfReplace("shuang", "ㄕㄨㄤ") - varLineData.selfReplace("zhuang", "ㄓㄨㄤ") - varLineData.selfReplace("chang", "ㄔㄤ") - varLineData.selfReplace("cheng", "ㄔㄥ") - varLineData.selfReplace("chong", "ㄔㄨㄥ") - varLineData.selfReplace("chuai", "ㄔㄨㄞ") - varLineData.selfReplace("chuan", "ㄔㄨㄢ") - varLineData.selfReplace("guang", "ㄍㄨㄤ") - varLineData.selfReplace("huang", "ㄏㄨㄤ") - varLineData.selfReplace("jiang", "ㄐㄧㄤ") - varLineData.selfReplace("jiong", "ㄐㄩㄥ") - varLineData.selfReplace("kuang", "ㄎㄨㄤ") - varLineData.selfReplace("liang", "ㄌㄧㄤ") - varLineData.selfReplace("niang", "ㄋㄧㄤ") - varLineData.selfReplace("qiang", "ㄑㄧㄤ") - varLineData.selfReplace("qiong", "ㄑㄩㄥ") - varLineData.selfReplace("shang", "ㄕㄤ") - varLineData.selfReplace("sheng", "ㄕㄥ") - varLineData.selfReplace("shuai", "ㄕㄨㄞ") - varLineData.selfReplace("shuan", "ㄕㄨㄢ") - varLineData.selfReplace("xiang", "ㄒㄧㄤ") - varLineData.selfReplace("xiong", "ㄒㄩㄥ") - varLineData.selfReplace("zhang", "ㄓㄤ") - varLineData.selfReplace("zheng", "ㄓㄥ") - varLineData.selfReplace("zhong", "ㄓㄨㄥ") - varLineData.selfReplace("zhuai", "ㄓㄨㄞ") - varLineData.selfReplace("zhuan", "ㄓㄨㄢ") - varLineData.selfReplace("bang", "ㄅㄤ") - varLineData.selfReplace("beng", "ㄅㄥ") - varLineData.selfReplace("bian", "ㄅㄧㄢ") - varLineData.selfReplace("biao", "ㄅㄧㄠ") - varLineData.selfReplace("bing", "ㄅㄧㄥ") - varLineData.selfReplace("cang", "ㄘㄤ") - varLineData.selfReplace("ceng", "ㄘㄥ") - varLineData.selfReplace("chai", "ㄔㄞ") - varLineData.selfReplace("chan", "ㄔㄢ") - varLineData.selfReplace("chao", "ㄔㄠ") - varLineData.selfReplace("chen", "ㄔㄣ") - varLineData.selfReplace("chou", "ㄔㄡ") - varLineData.selfReplace("chua", "ㄔㄨㄚ") - varLineData.selfReplace("chui", "ㄔㄨㄟ") - varLineData.selfReplace("chun", "ㄔㄨㄣ") - varLineData.selfReplace("chuo", "ㄔㄨㄛ") - varLineData.selfReplace("cong", "ㄘㄨㄥ") - varLineData.selfReplace("cuan", "ㄘㄨㄢ") - varLineData.selfReplace("dang", "ㄉㄤ") - varLineData.selfReplace("deng", "ㄉㄥ") - varLineData.selfReplace("dian", "ㄉㄧㄢ") - varLineData.selfReplace("diao", "ㄉㄧㄠ") - varLineData.selfReplace("ding", "ㄉㄧㄥ") - varLineData.selfReplace("dong", "ㄉㄨㄥ") - varLineData.selfReplace("duan", "ㄉㄨㄢ") - varLineData.selfReplace("fang", "ㄈㄤ") - varLineData.selfReplace("feng", "ㄈㄥ") - varLineData.selfReplace("fiao", "ㄈㄧㄠ") - varLineData.selfReplace("fong", "ㄈㄨㄥ") - varLineData.selfReplace("gang", "ㄍㄤ") - varLineData.selfReplace("geng", "ㄍㄥ") - varLineData.selfReplace("giao", "ㄍㄧㄠ") - varLineData.selfReplace("gong", "ㄍㄨㄥ") - varLineData.selfReplace("guai", "ㄍㄨㄞ") - varLineData.selfReplace("guan", "ㄍㄨㄢ") - varLineData.selfReplace("hang", "ㄏㄤ") - varLineData.selfReplace("heng", "ㄏㄥ") - varLineData.selfReplace("hong", "ㄏㄨㄥ") - varLineData.selfReplace("huai", "ㄏㄨㄞ") - varLineData.selfReplace("huan", "ㄏㄨㄢ") - varLineData.selfReplace("jian", "ㄐㄧㄢ") - varLineData.selfReplace("jiao", "ㄐㄧㄠ") - varLineData.selfReplace("jing", "ㄐㄧㄥ") - varLineData.selfReplace("juan", "ㄐㄩㄢ") - varLineData.selfReplace("kang", "ㄎㄤ") - varLineData.selfReplace("keng", "ㄎㄥ") - varLineData.selfReplace("kong", "ㄎㄨㄥ") - varLineData.selfReplace("kuai", "ㄎㄨㄞ") - varLineData.selfReplace("kuan", "ㄎㄨㄢ") - varLineData.selfReplace("lang", "ㄌㄤ") - varLineData.selfReplace("leng", "ㄌㄥ") - varLineData.selfReplace("lian", "ㄌㄧㄢ") - varLineData.selfReplace("liao", "ㄌㄧㄠ") - varLineData.selfReplace("ling", "ㄌㄧㄥ") - varLineData.selfReplace("long", "ㄌㄨㄥ") - varLineData.selfReplace("luan", "ㄌㄨㄢ") - varLineData.selfReplace("lvan", "ㄌㄩㄢ") - varLineData.selfReplace("mang", "ㄇㄤ") - varLineData.selfReplace("meng", "ㄇㄥ") - varLineData.selfReplace("mian", "ㄇㄧㄢ") - varLineData.selfReplace("miao", "ㄇㄧㄠ") - varLineData.selfReplace("ming", "ㄇㄧㄥ") - varLineData.selfReplace("nang", "ㄋㄤ") - varLineData.selfReplace("neng", "ㄋㄥ") - varLineData.selfReplace("nian", "ㄋㄧㄢ") - varLineData.selfReplace("niao", "ㄋㄧㄠ") - varLineData.selfReplace("ning", "ㄋㄧㄥ") - varLineData.selfReplace("nong", "ㄋㄨㄥ") - varLineData.selfReplace("nuan", "ㄋㄨㄢ") - varLineData.selfReplace("pang", "ㄆㄤ") - varLineData.selfReplace("peng", "ㄆㄥ") - varLineData.selfReplace("pian", "ㄆㄧㄢ") - varLineData.selfReplace("piao", "ㄆㄧㄠ") - varLineData.selfReplace("ping", "ㄆㄧㄥ") - varLineData.selfReplace("qian", "ㄑㄧㄢ") - varLineData.selfReplace("qiao", "ㄑㄧㄠ") - varLineData.selfReplace("qing", "ㄑㄧㄥ") - varLineData.selfReplace("quan", "ㄑㄩㄢ") - varLineData.selfReplace("rang", "ㄖㄤ") - varLineData.selfReplace("reng", "ㄖㄥ") - varLineData.selfReplace("rong", "ㄖㄨㄥ") - varLineData.selfReplace("ruan", "ㄖㄨㄢ") - varLineData.selfReplace("sang", "ㄙㄤ") - varLineData.selfReplace("seng", "ㄙㄥ") - varLineData.selfReplace("shai", "ㄕㄞ") - varLineData.selfReplace("shan", "ㄕㄢ") - varLineData.selfReplace("shao", "ㄕㄠ") - varLineData.selfReplace("shei", "ㄕㄟ") - varLineData.selfReplace("shen", "ㄕㄣ") - varLineData.selfReplace("shou", "ㄕㄡ") - varLineData.selfReplace("shua", "ㄕㄨㄚ") - varLineData.selfReplace("shui", "ㄕㄨㄟ") - varLineData.selfReplace("shun", "ㄕㄨㄣ") - varLineData.selfReplace("shuo", "ㄕㄨㄛ") - varLineData.selfReplace("song", "ㄙㄨㄥ") - varLineData.selfReplace("suan", "ㄙㄨㄢ") - varLineData.selfReplace("tang", "ㄊㄤ") - varLineData.selfReplace("teng", "ㄊㄥ") - varLineData.selfReplace("tian", "ㄊㄧㄢ") - varLineData.selfReplace("tiao", "ㄊㄧㄠ") - varLineData.selfReplace("ting", "ㄊㄧㄥ") - varLineData.selfReplace("tong", "ㄊㄨㄥ") - varLineData.selfReplace("tuan", "ㄊㄨㄢ") - varLineData.selfReplace("wang", "ㄨㄤ") - varLineData.selfReplace("weng", "ㄨㄥ") - varLineData.selfReplace("xian", "ㄒㄧㄢ") - varLineData.selfReplace("xiao", "ㄒㄧㄠ") - varLineData.selfReplace("xing", "ㄒㄧㄥ") - varLineData.selfReplace("xuan", "ㄒㄩㄢ") - varLineData.selfReplace("yang", "ㄧㄤ") - varLineData.selfReplace("ying", "ㄧㄥ") - varLineData.selfReplace("yong", "ㄩㄥ") - varLineData.selfReplace("yuan", "ㄩㄢ") - varLineData.selfReplace("zang", "ㄗㄤ") - varLineData.selfReplace("zeng", "ㄗㄥ") - varLineData.selfReplace("zhai", "ㄓㄞ") - varLineData.selfReplace("zhan", "ㄓㄢ") - varLineData.selfReplace("zhao", "ㄓㄠ") - varLineData.selfReplace("zhei", "ㄓㄟ") - varLineData.selfReplace("zhen", "ㄓㄣ") - varLineData.selfReplace("zhou", "ㄓㄡ") - varLineData.selfReplace("zhua", "ㄓㄨㄚ") - varLineData.selfReplace("zhui", "ㄓㄨㄟ") - varLineData.selfReplace("zhun", "ㄓㄨㄣ") - varLineData.selfReplace("zhuo", "ㄓㄨㄛ") - varLineData.selfReplace("zong", "ㄗㄨㄥ") - varLineData.selfReplace("zuan", "ㄗㄨㄢ") - varLineData.selfReplace("jun", "ㄐㄩㄣ") - varLineData.selfReplace("ang", "ㄤ") - varLineData.selfReplace("bai", "ㄅㄞ") - varLineData.selfReplace("ban", "ㄅㄢ") - varLineData.selfReplace("bao", "ㄅㄠ") - varLineData.selfReplace("bei", "ㄅㄟ") - varLineData.selfReplace("ben", "ㄅㄣ") - varLineData.selfReplace("bie", "ㄅㄧㄝ") - varLineData.selfReplace("bin", "ㄅㄧㄣ") - varLineData.selfReplace("cai", "ㄘㄞ") - varLineData.selfReplace("can", "ㄘㄢ") - varLineData.selfReplace("cao", "ㄘㄠ") - varLineData.selfReplace("cei", "ㄘㄟ") - varLineData.selfReplace("cen", "ㄘㄣ") - varLineData.selfReplace("cha", "ㄔㄚ") - varLineData.selfReplace("che", "ㄔㄜ") - varLineData.selfReplace("chi", "ㄔ") - varLineData.selfReplace("chu", "ㄔㄨ") - varLineData.selfReplace("cou", "ㄘㄡ") - varLineData.selfReplace("cui", "ㄘㄨㄟ") - varLineData.selfReplace("cun", "ㄘㄨㄣ") - varLineData.selfReplace("cuo", "ㄘㄨㄛ") - varLineData.selfReplace("dai", "ㄉㄞ") - varLineData.selfReplace("dan", "ㄉㄢ") - varLineData.selfReplace("dao", "ㄉㄠ") - varLineData.selfReplace("dei", "ㄉㄟ") - varLineData.selfReplace("den", "ㄉㄣ") - varLineData.selfReplace("dia", "ㄉㄧㄚ") - varLineData.selfReplace("die", "ㄉㄧㄝ") - varLineData.selfReplace("diu", "ㄉㄧㄡ") - varLineData.selfReplace("dou", "ㄉㄡ") - varLineData.selfReplace("dui", "ㄉㄨㄟ") - varLineData.selfReplace("dun", "ㄉㄨㄣ") - varLineData.selfReplace("duo", "ㄉㄨㄛ") - varLineData.selfReplace("eng", "ㄥ") - varLineData.selfReplace("fan", "ㄈㄢ") - varLineData.selfReplace("fei", "ㄈㄟ") - varLineData.selfReplace("fen", "ㄈㄣ") - varLineData.selfReplace("fou", "ㄈㄡ") - varLineData.selfReplace("gai", "ㄍㄞ") - varLineData.selfReplace("gan", "ㄍㄢ") - varLineData.selfReplace("gao", "ㄍㄠ") - varLineData.selfReplace("gei", "ㄍㄟ") - varLineData.selfReplace("gin", "ㄍㄧㄣ") - varLineData.selfReplace("gen", "ㄍㄣ") - varLineData.selfReplace("gou", "ㄍㄡ") - varLineData.selfReplace("gua", "ㄍㄨㄚ") - varLineData.selfReplace("gue", "ㄍㄨㄜ") - varLineData.selfReplace("gui", "ㄍㄨㄟ") - varLineData.selfReplace("gun", "ㄍㄨㄣ") - varLineData.selfReplace("guo", "ㄍㄨㄛ") - varLineData.selfReplace("hai", "ㄏㄞ") - varLineData.selfReplace("han", "ㄏㄢ") - varLineData.selfReplace("hao", "ㄏㄠ") - varLineData.selfReplace("hei", "ㄏㄟ") - varLineData.selfReplace("hen", "ㄏㄣ") - varLineData.selfReplace("hou", "ㄏㄡ") - varLineData.selfReplace("hua", "ㄏㄨㄚ") - varLineData.selfReplace("hui", "ㄏㄨㄟ") - varLineData.selfReplace("hun", "ㄏㄨㄣ") - varLineData.selfReplace("huo", "ㄏㄨㄛ") - varLineData.selfReplace("jia", "ㄐㄧㄚ") - varLineData.selfReplace("jie", "ㄐㄧㄝ") - varLineData.selfReplace("jin", "ㄐㄧㄣ") - varLineData.selfReplace("jiu", "ㄐㄧㄡ") - varLineData.selfReplace("jue", "ㄐㄩㄝ") - varLineData.selfReplace("kai", "ㄎㄞ") - varLineData.selfReplace("kan", "ㄎㄢ") - varLineData.selfReplace("kao", "ㄎㄠ") - varLineData.selfReplace("ken", "ㄎㄣ") - varLineData.selfReplace("kiu", "ㄎㄧㄡ") - varLineData.selfReplace("kou", "ㄎㄡ") - varLineData.selfReplace("kua", "ㄎㄨㄚ") - varLineData.selfReplace("kui", "ㄎㄨㄟ") - varLineData.selfReplace("kun", "ㄎㄨㄣ") - varLineData.selfReplace("kuo", "ㄎㄨㄛ") - varLineData.selfReplace("lai", "ㄌㄞ") - varLineData.selfReplace("lan", "ㄌㄢ") - varLineData.selfReplace("lao", "ㄌㄠ") - varLineData.selfReplace("lei", "ㄌㄟ") - varLineData.selfReplace("lia", "ㄌㄧㄚ") - varLineData.selfReplace("lie", "ㄌㄧㄝ") - varLineData.selfReplace("lin", "ㄌㄧㄣ") - varLineData.selfReplace("liu", "ㄌㄧㄡ") - varLineData.selfReplace("lou", "ㄌㄡ") - varLineData.selfReplace("lun", "ㄌㄨㄣ") - varLineData.selfReplace("luo", "ㄌㄨㄛ") - varLineData.selfReplace("lve", "ㄌㄩㄝ") - varLineData.selfReplace("mai", "ㄇㄞ") - varLineData.selfReplace("man", "ㄇㄢ") - varLineData.selfReplace("mao", "ㄇㄠ") - varLineData.selfReplace("mei", "ㄇㄟ") - varLineData.selfReplace("men", "ㄇㄣ") - varLineData.selfReplace("mie", "ㄇㄧㄝ") - varLineData.selfReplace("min", "ㄇㄧㄣ") - varLineData.selfReplace("miu", "ㄇㄧㄡ") - varLineData.selfReplace("mou", "ㄇㄡ") - varLineData.selfReplace("nai", "ㄋㄞ") - varLineData.selfReplace("nan", "ㄋㄢ") - varLineData.selfReplace("nao", "ㄋㄠ") - varLineData.selfReplace("nei", "ㄋㄟ") - varLineData.selfReplace("nen", "ㄋㄣ") - varLineData.selfReplace("nie", "ㄋㄧㄝ") - varLineData.selfReplace("nin", "ㄋㄧㄣ") - varLineData.selfReplace("niu", "ㄋㄧㄡ") - varLineData.selfReplace("nou", "ㄋㄡ") - varLineData.selfReplace("nui", "ㄋㄨㄟ") - varLineData.selfReplace("nun", "ㄋㄨㄣ") - varLineData.selfReplace("nuo", "ㄋㄨㄛ") - varLineData.selfReplace("nve", "ㄋㄩㄝ") - varLineData.selfReplace("pai", "ㄆㄞ") - varLineData.selfReplace("pan", "ㄆㄢ") - varLineData.selfReplace("pao", "ㄆㄠ") - varLineData.selfReplace("pei", "ㄆㄟ") - varLineData.selfReplace("pen", "ㄆㄣ") - varLineData.selfReplace("pia", "ㄆㄧㄚ") - varLineData.selfReplace("pie", "ㄆㄧㄝ") - varLineData.selfReplace("pin", "ㄆㄧㄣ") - varLineData.selfReplace("pou", "ㄆㄡ") - varLineData.selfReplace("qia", "ㄑㄧㄚ") - varLineData.selfReplace("qie", "ㄑㄧㄝ") - varLineData.selfReplace("qin", "ㄑㄧㄣ") - varLineData.selfReplace("qiu", "ㄑㄧㄡ") - varLineData.selfReplace("que", "ㄑㄩㄝ") - varLineData.selfReplace("qun", "ㄑㄩㄣ") - varLineData.selfReplace("ran", "ㄖㄢ") - varLineData.selfReplace("rao", "ㄖㄠ") - varLineData.selfReplace("ren", "ㄖㄣ") - varLineData.selfReplace("rou", "ㄖㄡ") - varLineData.selfReplace("rui", "ㄖㄨㄟ") - varLineData.selfReplace("run", "ㄖㄨㄣ") - varLineData.selfReplace("ruo", "ㄖㄨㄛ") - varLineData.selfReplace("sai", "ㄙㄞ") - varLineData.selfReplace("san", "ㄙㄢ") - varLineData.selfReplace("sao", "ㄙㄠ") - varLineData.selfReplace("sei", "ㄙㄟ") - varLineData.selfReplace("sen", "ㄙㄣ") - varLineData.selfReplace("sha", "ㄕㄚ") - varLineData.selfReplace("she", "ㄕㄜ") - varLineData.selfReplace("shi", "ㄕ") - varLineData.selfReplace("shu", "ㄕㄨ") - varLineData.selfReplace("sou", "ㄙㄡ") - varLineData.selfReplace("sui", "ㄙㄨㄟ") - varLineData.selfReplace("sun", "ㄙㄨㄣ") - varLineData.selfReplace("suo", "ㄙㄨㄛ") - varLineData.selfReplace("tai", "ㄊㄞ") - varLineData.selfReplace("tan", "ㄊㄢ") - varLineData.selfReplace("tao", "ㄊㄠ") - varLineData.selfReplace("tie", "ㄊㄧㄝ") - varLineData.selfReplace("tou", "ㄊㄡ") - varLineData.selfReplace("tui", "ㄊㄨㄟ") - varLineData.selfReplace("tun", "ㄊㄨㄣ") - varLineData.selfReplace("tuo", "ㄊㄨㄛ") - varLineData.selfReplace("wai", "ㄨㄞ") - varLineData.selfReplace("wan", "ㄨㄢ") - varLineData.selfReplace("wei", "ㄨㄟ") - varLineData.selfReplace("wen", "ㄨㄣ") - varLineData.selfReplace("xia", "ㄒㄧㄚ") - varLineData.selfReplace("xie", "ㄒㄧㄝ") - varLineData.selfReplace("xin", "ㄒㄧㄣ") - varLineData.selfReplace("xiu", "ㄒㄧㄡ") - varLineData.selfReplace("xue", "ㄒㄩㄝ") - varLineData.selfReplace("xun", "ㄒㄩㄣ") - varLineData.selfReplace("yai", "ㄧㄞ") - varLineData.selfReplace("yan", "ㄧㄢ") - varLineData.selfReplace("yao", "ㄧㄠ") - varLineData.selfReplace("yin", "ㄧㄣ") - varLineData.selfReplace("you", "ㄧㄡ") - varLineData.selfReplace("yue", "ㄩㄝ") - varLineData.selfReplace("yun", "ㄩㄣ") - varLineData.selfReplace("zai", "ㄗㄞ") - varLineData.selfReplace("zan", "ㄗㄢ") - varLineData.selfReplace("zao", "ㄗㄠ") - varLineData.selfReplace("zei", "ㄗㄟ") - varLineData.selfReplace("zen", "ㄗㄣ") - varLineData.selfReplace("zha", "ㄓㄚ") - varLineData.selfReplace("zhe", "ㄓㄜ") - varLineData.selfReplace("zhi", "ㄓ") - varLineData.selfReplace("zhu", "ㄓㄨ") - varLineData.selfReplace("zou", "ㄗㄡ") - varLineData.selfReplace("zui", "ㄗㄨㄟ") - varLineData.selfReplace("zun", "ㄗㄨㄣ") - varLineData.selfReplace("zuo", "ㄗㄨㄛ") - varLineData.selfReplace("ai", "ㄞ") - varLineData.selfReplace("an", "ㄢ") - varLineData.selfReplace("ao", "ㄠ") - varLineData.selfReplace("ba", "ㄅㄚ") - varLineData.selfReplace("bi", "ㄅㄧ") - varLineData.selfReplace("bo", "ㄅㄛ") - varLineData.selfReplace("bu", "ㄅㄨ") - varLineData.selfReplace("ca", "ㄘㄚ") - varLineData.selfReplace("ce", "ㄘㄜ") - varLineData.selfReplace("ci", "ㄘ") - varLineData.selfReplace("cu", "ㄘㄨ") - varLineData.selfReplace("da", "ㄉㄚ") - varLineData.selfReplace("de", "ㄉㄜ") - varLineData.selfReplace("di", "ㄉㄧ") - varLineData.selfReplace("du", "ㄉㄨ") - varLineData.selfReplace("eh", "ㄝ") - varLineData.selfReplace("ei", "ㄟ") - varLineData.selfReplace("en", "ㄣ") - varLineData.selfReplace("er", "ㄦ") - varLineData.selfReplace("fa", "ㄈㄚ") - varLineData.selfReplace("fo", "ㄈㄛ") - varLineData.selfReplace("fu", "ㄈㄨ") - varLineData.selfReplace("ga", "ㄍㄚ") - varLineData.selfReplace("ge", "ㄍㄜ") - varLineData.selfReplace("gi", "ㄍㄧ") - varLineData.selfReplace("gu", "ㄍㄨ") - varLineData.selfReplace("ha", "ㄏㄚ") - varLineData.selfReplace("he", "ㄏㄜ") - varLineData.selfReplace("hu", "ㄏㄨ") - varLineData.selfReplace("ji", "ㄐㄧ") - varLineData.selfReplace("ju", "ㄐㄩ") - varLineData.selfReplace("ka", "ㄎㄚ") - varLineData.selfReplace("ke", "ㄎㄜ") - varLineData.selfReplace("ku", "ㄎㄨ") - varLineData.selfReplace("la", "ㄌㄚ") - varLineData.selfReplace("le", "ㄌㄜ") - varLineData.selfReplace("li", "ㄌㄧ") - varLineData.selfReplace("lo", "ㄌㄛ") - varLineData.selfReplace("lu", "ㄌㄨ") - varLineData.selfReplace("lv", "ㄌㄩ") - varLineData.selfReplace("ma", "ㄇㄚ") - varLineData.selfReplace("me", "ㄇㄜ") - varLineData.selfReplace("mi", "ㄇㄧ") - varLineData.selfReplace("mo", "ㄇㄛ") - varLineData.selfReplace("mu", "ㄇㄨ") - varLineData.selfReplace("na", "ㄋㄚ") - varLineData.selfReplace("ne", "ㄋㄜ") - varLineData.selfReplace("ni", "ㄋㄧ") - varLineData.selfReplace("nu", "ㄋㄨ") - varLineData.selfReplace("nv", "ㄋㄩ") - varLineData.selfReplace("ou", "ㄡ") - varLineData.selfReplace("pa", "ㄆㄚ") - varLineData.selfReplace("pi", "ㄆㄧ") - varLineData.selfReplace("po", "ㄆㄛ") - varLineData.selfReplace("pu", "ㄆㄨ") - varLineData.selfReplace("qi", "ㄑㄧ") - varLineData.selfReplace("qu", "ㄑㄩ") - varLineData.selfReplace("re", "ㄖㄜ") - varLineData.selfReplace("ri", "ㄖ") - varLineData.selfReplace("ru", "ㄖㄨ") - varLineData.selfReplace("sa", "ㄙㄚ") - varLineData.selfReplace("se", "ㄙㄜ") - varLineData.selfReplace("si", "ㄙ") - varLineData.selfReplace("su", "ㄙㄨ") - varLineData.selfReplace("ta", "ㄊㄚ") - varLineData.selfReplace("te", "ㄊㄜ") - varLineData.selfReplace("ti", "ㄊㄧ") - varLineData.selfReplace("tu", "ㄊㄨ") - varLineData.selfReplace("wa", "ㄨㄚ") - varLineData.selfReplace("wo", "ㄨㄛ") - varLineData.selfReplace("wu", "ㄨ") - varLineData.selfReplace("xi", "ㄒㄧ") - varLineData.selfReplace("xu", "ㄒㄩ") - varLineData.selfReplace("ya", "ㄧㄚ") - varLineData.selfReplace("ye", "ㄧㄝ") - varLineData.selfReplace("yi", "ㄧ") - varLineData.selfReplace("yo", "ㄧㄛ") - varLineData.selfReplace("yu", "ㄩ") - varLineData.selfReplace("za", "ㄗㄚ") - varLineData.selfReplace("ze", "ㄗㄜ") - varLineData.selfReplace("zi", "ㄗ") - varLineData.selfReplace("zu", "ㄗㄨ") - varLineData.selfReplace("a", "ㄚ") - varLineData.selfReplace("e", "ㄜ") - varLineData.selfReplace("o", "ㄛ") - varLineData.selfReplace("q", "ㄑ") - varLineData.selfReplace("2", "ˊ") - varLineData.selfReplace("3", "ˇ") - varLineData.selfReplace("4", "ˋ") - varLineData.selfReplace("5", "˙") - varLineData.selfReplace("1", "") - strProcessed += varLineData - strProcessed += "\n" - } + // Step 2: Convert HanyuPinyin to Bopomofo. + // 漢語拼音轉注音,得先從最長的可能的拼音組合開始轉起, + // 這樣等轉換到更短的可能的漢語拼音組合時就不會出錯。 + // 依此類推,聲調放在最後來轉換。 + strProcessed.selfReplace("chuang", "ㄔㄨㄤ") + strProcessed.selfReplace("shuang", "ㄕㄨㄤ") + strProcessed.selfReplace("zhuang", "ㄓㄨㄤ") + strProcessed.selfReplace("chang", "ㄔㄤ") + strProcessed.selfReplace("cheng", "ㄔㄥ") + strProcessed.selfReplace("chong", "ㄔㄨㄥ") + strProcessed.selfReplace("chuai", "ㄔㄨㄞ") + strProcessed.selfReplace("chuan", "ㄔㄨㄢ") + strProcessed.selfReplace("guang", "ㄍㄨㄤ") + strProcessed.selfReplace("huang", "ㄏㄨㄤ") + strProcessed.selfReplace("jiang", "ㄐㄧㄤ") + strProcessed.selfReplace("jiong", "ㄐㄩㄥ") + strProcessed.selfReplace("kuang", "ㄎㄨㄤ") + strProcessed.selfReplace("liang", "ㄌㄧㄤ") + strProcessed.selfReplace("niang", "ㄋㄧㄤ") + strProcessed.selfReplace("qiang", "ㄑㄧㄤ") + strProcessed.selfReplace("qiong", "ㄑㄩㄥ") + strProcessed.selfReplace("shang", "ㄕㄤ") + strProcessed.selfReplace("sheng", "ㄕㄥ") + strProcessed.selfReplace("shuai", "ㄕㄨㄞ") + strProcessed.selfReplace("shuan", "ㄕㄨㄢ") + strProcessed.selfReplace("xiang", "ㄒㄧㄤ") + strProcessed.selfReplace("xiong", "ㄒㄩㄥ") + strProcessed.selfReplace("zhang", "ㄓㄤ") + strProcessed.selfReplace("zheng", "ㄓㄥ") + strProcessed.selfReplace("zhong", "ㄓㄨㄥ") + strProcessed.selfReplace("zhuai", "ㄓㄨㄞ") + strProcessed.selfReplace("zhuan", "ㄓㄨㄢ") + strProcessed.selfReplace("bang", "ㄅㄤ") + strProcessed.selfReplace("beng", "ㄅㄥ") + strProcessed.selfReplace("bian", "ㄅㄧㄢ") + strProcessed.selfReplace("biao", "ㄅㄧㄠ") + strProcessed.selfReplace("bing", "ㄅㄧㄥ") + strProcessed.selfReplace("cang", "ㄘㄤ") + strProcessed.selfReplace("ceng", "ㄘㄥ") + strProcessed.selfReplace("chai", "ㄔㄞ") + strProcessed.selfReplace("chan", "ㄔㄢ") + strProcessed.selfReplace("chao", "ㄔㄠ") + strProcessed.selfReplace("chen", "ㄔㄣ") + strProcessed.selfReplace("chou", "ㄔㄡ") + strProcessed.selfReplace("chua", "ㄔㄨㄚ") + strProcessed.selfReplace("chui", "ㄔㄨㄟ") + strProcessed.selfReplace("chun", "ㄔㄨㄣ") + strProcessed.selfReplace("chuo", "ㄔㄨㄛ") + strProcessed.selfReplace("cong", "ㄘㄨㄥ") + strProcessed.selfReplace("cuan", "ㄘㄨㄢ") + strProcessed.selfReplace("dang", "ㄉㄤ") + strProcessed.selfReplace("deng", "ㄉㄥ") + strProcessed.selfReplace("dian", "ㄉㄧㄢ") + strProcessed.selfReplace("diao", "ㄉㄧㄠ") + strProcessed.selfReplace("ding", "ㄉㄧㄥ") + strProcessed.selfReplace("dong", "ㄉㄨㄥ") + strProcessed.selfReplace("duan", "ㄉㄨㄢ") + strProcessed.selfReplace("fang", "ㄈㄤ") + strProcessed.selfReplace("feng", "ㄈㄥ") + strProcessed.selfReplace("fiao", "ㄈㄧㄠ") + strProcessed.selfReplace("fong", "ㄈㄨㄥ") + strProcessed.selfReplace("gang", "ㄍㄤ") + strProcessed.selfReplace("geng", "ㄍㄥ") + strProcessed.selfReplace("giao", "ㄍㄧㄠ") + strProcessed.selfReplace("gong", "ㄍㄨㄥ") + strProcessed.selfReplace("guai", "ㄍㄨㄞ") + strProcessed.selfReplace("guan", "ㄍㄨㄢ") + strProcessed.selfReplace("hang", "ㄏㄤ") + strProcessed.selfReplace("heng", "ㄏㄥ") + strProcessed.selfReplace("hong", "ㄏㄨㄥ") + strProcessed.selfReplace("huai", "ㄏㄨㄞ") + strProcessed.selfReplace("huan", "ㄏㄨㄢ") + strProcessed.selfReplace("jian", "ㄐㄧㄢ") + strProcessed.selfReplace("jiao", "ㄐㄧㄠ") + strProcessed.selfReplace("jing", "ㄐㄧㄥ") + strProcessed.selfReplace("juan", "ㄐㄩㄢ") + strProcessed.selfReplace("kang", "ㄎㄤ") + strProcessed.selfReplace("keng", "ㄎㄥ") + strProcessed.selfReplace("kong", "ㄎㄨㄥ") + strProcessed.selfReplace("kuai", "ㄎㄨㄞ") + strProcessed.selfReplace("kuan", "ㄎㄨㄢ") + strProcessed.selfReplace("lang", "ㄌㄤ") + strProcessed.selfReplace("leng", "ㄌㄥ") + strProcessed.selfReplace("lian", "ㄌㄧㄢ") + strProcessed.selfReplace("liao", "ㄌㄧㄠ") + strProcessed.selfReplace("ling", "ㄌㄧㄥ") + strProcessed.selfReplace("long", "ㄌㄨㄥ") + strProcessed.selfReplace("luan", "ㄌㄨㄢ") + strProcessed.selfReplace("lvan", "ㄌㄩㄢ") + strProcessed.selfReplace("mang", "ㄇㄤ") + strProcessed.selfReplace("meng", "ㄇㄥ") + strProcessed.selfReplace("mian", "ㄇㄧㄢ") + strProcessed.selfReplace("miao", "ㄇㄧㄠ") + strProcessed.selfReplace("ming", "ㄇㄧㄥ") + strProcessed.selfReplace("nang", "ㄋㄤ") + strProcessed.selfReplace("neng", "ㄋㄥ") + strProcessed.selfReplace("nian", "ㄋㄧㄢ") + strProcessed.selfReplace("niao", "ㄋㄧㄠ") + strProcessed.selfReplace("ning", "ㄋㄧㄥ") + strProcessed.selfReplace("nong", "ㄋㄨㄥ") + strProcessed.selfReplace("nuan", "ㄋㄨㄢ") + strProcessed.selfReplace("pang", "ㄆㄤ") + strProcessed.selfReplace("peng", "ㄆㄥ") + strProcessed.selfReplace("pian", "ㄆㄧㄢ") + strProcessed.selfReplace("piao", "ㄆㄧㄠ") + strProcessed.selfReplace("ping", "ㄆㄧㄥ") + strProcessed.selfReplace("qian", "ㄑㄧㄢ") + strProcessed.selfReplace("qiao", "ㄑㄧㄠ") + strProcessed.selfReplace("qing", "ㄑㄧㄥ") + strProcessed.selfReplace("quan", "ㄑㄩㄢ") + strProcessed.selfReplace("rang", "ㄖㄤ") + strProcessed.selfReplace("reng", "ㄖㄥ") + strProcessed.selfReplace("rong", "ㄖㄨㄥ") + strProcessed.selfReplace("ruan", "ㄖㄨㄢ") + strProcessed.selfReplace("sang", "ㄙㄤ") + strProcessed.selfReplace("seng", "ㄙㄥ") + strProcessed.selfReplace("shai", "ㄕㄞ") + strProcessed.selfReplace("shan", "ㄕㄢ") + strProcessed.selfReplace("shao", "ㄕㄠ") + strProcessed.selfReplace("shei", "ㄕㄟ") + strProcessed.selfReplace("shen", "ㄕㄣ") + strProcessed.selfReplace("shou", "ㄕㄡ") + strProcessed.selfReplace("shua", "ㄕㄨㄚ") + strProcessed.selfReplace("shui", "ㄕㄨㄟ") + strProcessed.selfReplace("shun", "ㄕㄨㄣ") + strProcessed.selfReplace("shuo", "ㄕㄨㄛ") + strProcessed.selfReplace("song", "ㄙㄨㄥ") + strProcessed.selfReplace("suan", "ㄙㄨㄢ") + strProcessed.selfReplace("tang", "ㄊㄤ") + strProcessed.selfReplace("teng", "ㄊㄥ") + strProcessed.selfReplace("tian", "ㄊㄧㄢ") + strProcessed.selfReplace("tiao", "ㄊㄧㄠ") + strProcessed.selfReplace("ting", "ㄊㄧㄥ") + strProcessed.selfReplace("tong", "ㄊㄨㄥ") + strProcessed.selfReplace("tuan", "ㄊㄨㄢ") + strProcessed.selfReplace("wang", "ㄨㄤ") + strProcessed.selfReplace("weng", "ㄨㄥ") + strProcessed.selfReplace("xian", "ㄒㄧㄢ") + strProcessed.selfReplace("xiao", "ㄒㄧㄠ") + strProcessed.selfReplace("xing", "ㄒㄧㄥ") + strProcessed.selfReplace("xuan", "ㄒㄩㄢ") + strProcessed.selfReplace("yang", "ㄧㄤ") + strProcessed.selfReplace("ying", "ㄧㄥ") + strProcessed.selfReplace("yong", "ㄩㄥ") + strProcessed.selfReplace("yuan", "ㄩㄢ") + strProcessed.selfReplace("zang", "ㄗㄤ") + strProcessed.selfReplace("zeng", "ㄗㄥ") + strProcessed.selfReplace("zhai", "ㄓㄞ") + strProcessed.selfReplace("zhan", "ㄓㄢ") + strProcessed.selfReplace("zhao", "ㄓㄠ") + strProcessed.selfReplace("zhei", "ㄓㄟ") + strProcessed.selfReplace("zhen", "ㄓㄣ") + strProcessed.selfReplace("zhou", "ㄓㄡ") + strProcessed.selfReplace("zhua", "ㄓㄨㄚ") + strProcessed.selfReplace("zhui", "ㄓㄨㄟ") + strProcessed.selfReplace("zhun", "ㄓㄨㄣ") + strProcessed.selfReplace("zhuo", "ㄓㄨㄛ") + strProcessed.selfReplace("zong", "ㄗㄨㄥ") + strProcessed.selfReplace("zuan", "ㄗㄨㄢ") + strProcessed.selfReplace("jun", "ㄐㄩㄣ") + strProcessed.selfReplace("ang", "ㄤ") + strProcessed.selfReplace("bai", "ㄅㄞ") + strProcessed.selfReplace("ban", "ㄅㄢ") + strProcessed.selfReplace("bao", "ㄅㄠ") + strProcessed.selfReplace("bei", "ㄅㄟ") + strProcessed.selfReplace("ben", "ㄅㄣ") + strProcessed.selfReplace("bie", "ㄅㄧㄝ") + strProcessed.selfReplace("bin", "ㄅㄧㄣ") + strProcessed.selfReplace("cai", "ㄘㄞ") + strProcessed.selfReplace("can", "ㄘㄢ") + strProcessed.selfReplace("cao", "ㄘㄠ") + strProcessed.selfReplace("cei", "ㄘㄟ") + strProcessed.selfReplace("cen", "ㄘㄣ") + strProcessed.selfReplace("cha", "ㄔㄚ") + strProcessed.selfReplace("che", "ㄔㄜ") + strProcessed.selfReplace("chi", "ㄔ") + strProcessed.selfReplace("chu", "ㄔㄨ") + strProcessed.selfReplace("cou", "ㄘㄡ") + strProcessed.selfReplace("cui", "ㄘㄨㄟ") + strProcessed.selfReplace("cun", "ㄘㄨㄣ") + strProcessed.selfReplace("cuo", "ㄘㄨㄛ") + strProcessed.selfReplace("dai", "ㄉㄞ") + strProcessed.selfReplace("dan", "ㄉㄢ") + strProcessed.selfReplace("dao", "ㄉㄠ") + strProcessed.selfReplace("dei", "ㄉㄟ") + strProcessed.selfReplace("den", "ㄉㄣ") + strProcessed.selfReplace("dia", "ㄉㄧㄚ") + strProcessed.selfReplace("die", "ㄉㄧㄝ") + strProcessed.selfReplace("diu", "ㄉㄧㄡ") + strProcessed.selfReplace("dou", "ㄉㄡ") + strProcessed.selfReplace("dui", "ㄉㄨㄟ") + strProcessed.selfReplace("dun", "ㄉㄨㄣ") + strProcessed.selfReplace("duo", "ㄉㄨㄛ") + strProcessed.selfReplace("eng", "ㄥ") + strProcessed.selfReplace("fan", "ㄈㄢ") + strProcessed.selfReplace("fei", "ㄈㄟ") + strProcessed.selfReplace("fen", "ㄈㄣ") + strProcessed.selfReplace("fou", "ㄈㄡ") + strProcessed.selfReplace("gai", "ㄍㄞ") + strProcessed.selfReplace("gan", "ㄍㄢ") + strProcessed.selfReplace("gao", "ㄍㄠ") + strProcessed.selfReplace("gei", "ㄍㄟ") + strProcessed.selfReplace("gin", "ㄍㄧㄣ") + strProcessed.selfReplace("gen", "ㄍㄣ") + strProcessed.selfReplace("gou", "ㄍㄡ") + strProcessed.selfReplace("gua", "ㄍㄨㄚ") + strProcessed.selfReplace("gue", "ㄍㄨㄜ") + strProcessed.selfReplace("gui", "ㄍㄨㄟ") + strProcessed.selfReplace("gun", "ㄍㄨㄣ") + strProcessed.selfReplace("guo", "ㄍㄨㄛ") + strProcessed.selfReplace("hai", "ㄏㄞ") + strProcessed.selfReplace("han", "ㄏㄢ") + strProcessed.selfReplace("hao", "ㄏㄠ") + strProcessed.selfReplace("hei", "ㄏㄟ") + strProcessed.selfReplace("hen", "ㄏㄣ") + strProcessed.selfReplace("hou", "ㄏㄡ") + strProcessed.selfReplace("hua", "ㄏㄨㄚ") + strProcessed.selfReplace("hui", "ㄏㄨㄟ") + strProcessed.selfReplace("hun", "ㄏㄨㄣ") + strProcessed.selfReplace("huo", "ㄏㄨㄛ") + strProcessed.selfReplace("jia", "ㄐㄧㄚ") + strProcessed.selfReplace("jie", "ㄐㄧㄝ") + strProcessed.selfReplace("jin", "ㄐㄧㄣ") + strProcessed.selfReplace("jiu", "ㄐㄧㄡ") + strProcessed.selfReplace("jue", "ㄐㄩㄝ") + strProcessed.selfReplace("kai", "ㄎㄞ") + strProcessed.selfReplace("kan", "ㄎㄢ") + strProcessed.selfReplace("kao", "ㄎㄠ") + strProcessed.selfReplace("ken", "ㄎㄣ") + strProcessed.selfReplace("kiu", "ㄎㄧㄡ") + strProcessed.selfReplace("kou", "ㄎㄡ") + strProcessed.selfReplace("kua", "ㄎㄨㄚ") + strProcessed.selfReplace("kui", "ㄎㄨㄟ") + strProcessed.selfReplace("kun", "ㄎㄨㄣ") + strProcessed.selfReplace("kuo", "ㄎㄨㄛ") + strProcessed.selfReplace("lai", "ㄌㄞ") + strProcessed.selfReplace("lan", "ㄌㄢ") + strProcessed.selfReplace("lao", "ㄌㄠ") + strProcessed.selfReplace("lei", "ㄌㄟ") + strProcessed.selfReplace("lia", "ㄌㄧㄚ") + strProcessed.selfReplace("lie", "ㄌㄧㄝ") + strProcessed.selfReplace("lin", "ㄌㄧㄣ") + strProcessed.selfReplace("liu", "ㄌㄧㄡ") + strProcessed.selfReplace("lou", "ㄌㄡ") + strProcessed.selfReplace("lun", "ㄌㄨㄣ") + strProcessed.selfReplace("luo", "ㄌㄨㄛ") + strProcessed.selfReplace("lve", "ㄌㄩㄝ") + strProcessed.selfReplace("mai", "ㄇㄞ") + strProcessed.selfReplace("man", "ㄇㄢ") + strProcessed.selfReplace("mao", "ㄇㄠ") + strProcessed.selfReplace("mei", "ㄇㄟ") + strProcessed.selfReplace("men", "ㄇㄣ") + strProcessed.selfReplace("mie", "ㄇㄧㄝ") + strProcessed.selfReplace("min", "ㄇㄧㄣ") + strProcessed.selfReplace("miu", "ㄇㄧㄡ") + strProcessed.selfReplace("mou", "ㄇㄡ") + strProcessed.selfReplace("nai", "ㄋㄞ") + strProcessed.selfReplace("nan", "ㄋㄢ") + strProcessed.selfReplace("nao", "ㄋㄠ") + strProcessed.selfReplace("nei", "ㄋㄟ") + strProcessed.selfReplace("nen", "ㄋㄣ") + strProcessed.selfReplace("nie", "ㄋㄧㄝ") + strProcessed.selfReplace("nin", "ㄋㄧㄣ") + strProcessed.selfReplace("niu", "ㄋㄧㄡ") + strProcessed.selfReplace("nou", "ㄋㄡ") + strProcessed.selfReplace("nui", "ㄋㄨㄟ") + strProcessed.selfReplace("nun", "ㄋㄨㄣ") + strProcessed.selfReplace("nuo", "ㄋㄨㄛ") + strProcessed.selfReplace("nve", "ㄋㄩㄝ") + strProcessed.selfReplace("pai", "ㄆㄞ") + strProcessed.selfReplace("pan", "ㄆㄢ") + strProcessed.selfReplace("pao", "ㄆㄠ") + strProcessed.selfReplace("pei", "ㄆㄟ") + strProcessed.selfReplace("pen", "ㄆㄣ") + strProcessed.selfReplace("pia", "ㄆㄧㄚ") + strProcessed.selfReplace("pie", "ㄆㄧㄝ") + strProcessed.selfReplace("pin", "ㄆㄧㄣ") + strProcessed.selfReplace("pou", "ㄆㄡ") + strProcessed.selfReplace("qia", "ㄑㄧㄚ") + strProcessed.selfReplace("qie", "ㄑㄧㄝ") + strProcessed.selfReplace("qin", "ㄑㄧㄣ") + strProcessed.selfReplace("qiu", "ㄑㄧㄡ") + strProcessed.selfReplace("que", "ㄑㄩㄝ") + strProcessed.selfReplace("qun", "ㄑㄩㄣ") + strProcessed.selfReplace("ran", "ㄖㄢ") + strProcessed.selfReplace("rao", "ㄖㄠ") + strProcessed.selfReplace("ren", "ㄖㄣ") + strProcessed.selfReplace("rou", "ㄖㄡ") + strProcessed.selfReplace("rui", "ㄖㄨㄟ") + strProcessed.selfReplace("run", "ㄖㄨㄣ") + strProcessed.selfReplace("ruo", "ㄖㄨㄛ") + strProcessed.selfReplace("sai", "ㄙㄞ") + strProcessed.selfReplace("san", "ㄙㄢ") + strProcessed.selfReplace("sao", "ㄙㄠ") + strProcessed.selfReplace("sei", "ㄙㄟ") + strProcessed.selfReplace("sen", "ㄙㄣ") + strProcessed.selfReplace("sha", "ㄕㄚ") + strProcessed.selfReplace("she", "ㄕㄜ") + strProcessed.selfReplace("shi", "ㄕ") + strProcessed.selfReplace("shu", "ㄕㄨ") + strProcessed.selfReplace("sou", "ㄙㄡ") + strProcessed.selfReplace("sui", "ㄙㄨㄟ") + strProcessed.selfReplace("sun", "ㄙㄨㄣ") + strProcessed.selfReplace("suo", "ㄙㄨㄛ") + strProcessed.selfReplace("tai", "ㄊㄞ") + strProcessed.selfReplace("tan", "ㄊㄢ") + strProcessed.selfReplace("tao", "ㄊㄠ") + strProcessed.selfReplace("tie", "ㄊㄧㄝ") + strProcessed.selfReplace("tou", "ㄊㄡ") + strProcessed.selfReplace("tui", "ㄊㄨㄟ") + strProcessed.selfReplace("tun", "ㄊㄨㄣ") + strProcessed.selfReplace("tuo", "ㄊㄨㄛ") + strProcessed.selfReplace("wai", "ㄨㄞ") + strProcessed.selfReplace("wan", "ㄨㄢ") + strProcessed.selfReplace("wei", "ㄨㄟ") + strProcessed.selfReplace("wen", "ㄨㄣ") + strProcessed.selfReplace("xia", "ㄒㄧㄚ") + strProcessed.selfReplace("xie", "ㄒㄧㄝ") + strProcessed.selfReplace("xin", "ㄒㄧㄣ") + strProcessed.selfReplace("xiu", "ㄒㄧㄡ") + strProcessed.selfReplace("xue", "ㄒㄩㄝ") + strProcessed.selfReplace("xun", "ㄒㄩㄣ") + strProcessed.selfReplace("yai", "ㄧㄞ") + strProcessed.selfReplace("yan", "ㄧㄢ") + strProcessed.selfReplace("yao", "ㄧㄠ") + strProcessed.selfReplace("yin", "ㄧㄣ") + strProcessed.selfReplace("you", "ㄧㄡ") + strProcessed.selfReplace("yue", "ㄩㄝ") + strProcessed.selfReplace("yun", "ㄩㄣ") + strProcessed.selfReplace("zai", "ㄗㄞ") + strProcessed.selfReplace("zan", "ㄗㄢ") + strProcessed.selfReplace("zao", "ㄗㄠ") + strProcessed.selfReplace("zei", "ㄗㄟ") + strProcessed.selfReplace("zen", "ㄗㄣ") + strProcessed.selfReplace("zha", "ㄓㄚ") + strProcessed.selfReplace("zhe", "ㄓㄜ") + strProcessed.selfReplace("zhi", "ㄓ") + strProcessed.selfReplace("zhu", "ㄓㄨ") + strProcessed.selfReplace("zou", "ㄗㄡ") + strProcessed.selfReplace("zui", "ㄗㄨㄟ") + strProcessed.selfReplace("zun", "ㄗㄨㄣ") + strProcessed.selfReplace("zuo", "ㄗㄨㄛ") + strProcessed.selfReplace("ai", "ㄞ") + strProcessed.selfReplace("an", "ㄢ") + strProcessed.selfReplace("ao", "ㄠ") + strProcessed.selfReplace("ba", "ㄅㄚ") + strProcessed.selfReplace("bi", "ㄅㄧ") + strProcessed.selfReplace("bo", "ㄅㄛ") + strProcessed.selfReplace("bu", "ㄅㄨ") + strProcessed.selfReplace("ca", "ㄘㄚ") + strProcessed.selfReplace("ce", "ㄘㄜ") + strProcessed.selfReplace("ci", "ㄘ") + strProcessed.selfReplace("cu", "ㄘㄨ") + strProcessed.selfReplace("da", "ㄉㄚ") + strProcessed.selfReplace("de", "ㄉㄜ") + strProcessed.selfReplace("di", "ㄉㄧ") + strProcessed.selfReplace("du", "ㄉㄨ") + strProcessed.selfReplace("eh", "ㄝ") + strProcessed.selfReplace("ei", "ㄟ") + strProcessed.selfReplace("en", "ㄣ") + strProcessed.selfReplace("er", "ㄦ") + strProcessed.selfReplace("fa", "ㄈㄚ") + strProcessed.selfReplace("fo", "ㄈㄛ") + strProcessed.selfReplace("fu", "ㄈㄨ") + strProcessed.selfReplace("ga", "ㄍㄚ") + strProcessed.selfReplace("ge", "ㄍㄜ") + strProcessed.selfReplace("gi", "ㄍㄧ") + strProcessed.selfReplace("gu", "ㄍㄨ") + strProcessed.selfReplace("ha", "ㄏㄚ") + strProcessed.selfReplace("he", "ㄏㄜ") + strProcessed.selfReplace("hu", "ㄏㄨ") + strProcessed.selfReplace("ji", "ㄐㄧ") + strProcessed.selfReplace("ju", "ㄐㄩ") + strProcessed.selfReplace("ka", "ㄎㄚ") + strProcessed.selfReplace("ke", "ㄎㄜ") + strProcessed.selfReplace("ku", "ㄎㄨ") + strProcessed.selfReplace("la", "ㄌㄚ") + strProcessed.selfReplace("le", "ㄌㄜ") + strProcessed.selfReplace("li", "ㄌㄧ") + strProcessed.selfReplace("lo", "ㄌㄛ") + strProcessed.selfReplace("lu", "ㄌㄨ") + strProcessed.selfReplace("lv", "ㄌㄩ") + strProcessed.selfReplace("ma", "ㄇㄚ") + strProcessed.selfReplace("me", "ㄇㄜ") + strProcessed.selfReplace("mi", "ㄇㄧ") + strProcessed.selfReplace("mo", "ㄇㄛ") + strProcessed.selfReplace("mu", "ㄇㄨ") + strProcessed.selfReplace("na", "ㄋㄚ") + strProcessed.selfReplace("ne", "ㄋㄜ") + strProcessed.selfReplace("ni", "ㄋㄧ") + strProcessed.selfReplace("nu", "ㄋㄨ") + strProcessed.selfReplace("nv", "ㄋㄩ") + strProcessed.selfReplace("ou", "ㄡ") + strProcessed.selfReplace("pa", "ㄆㄚ") + strProcessed.selfReplace("pi", "ㄆㄧ") + strProcessed.selfReplace("po", "ㄆㄛ") + strProcessed.selfReplace("pu", "ㄆㄨ") + strProcessed.selfReplace("qi", "ㄑㄧ") + strProcessed.selfReplace("qu", "ㄑㄩ") + strProcessed.selfReplace("re", "ㄖㄜ") + strProcessed.selfReplace("ri", "ㄖ") + strProcessed.selfReplace("ru", "ㄖㄨ") + strProcessed.selfReplace("sa", "ㄙㄚ") + strProcessed.selfReplace("se", "ㄙㄜ") + strProcessed.selfReplace("si", "ㄙ") + strProcessed.selfReplace("su", "ㄙㄨ") + strProcessed.selfReplace("ta", "ㄊㄚ") + strProcessed.selfReplace("te", "ㄊㄜ") + strProcessed.selfReplace("ti", "ㄊㄧ") + strProcessed.selfReplace("tu", "ㄊㄨ") + strProcessed.selfReplace("wa", "ㄨㄚ") + strProcessed.selfReplace("wo", "ㄨㄛ") + strProcessed.selfReplace("wu", "ㄨ") + strProcessed.selfReplace("xi", "ㄒㄧ") + strProcessed.selfReplace("xu", "ㄒㄩ") + strProcessed.selfReplace("ya", "ㄧㄚ") + strProcessed.selfReplace("ye", "ㄧㄝ") + strProcessed.selfReplace("yi", "ㄧ") + strProcessed.selfReplace("yo", "ㄧㄛ") + strProcessed.selfReplace("yu", "ㄩ") + strProcessed.selfReplace("za", "ㄗㄚ") + strProcessed.selfReplace("ze", "ㄗㄜ") + strProcessed.selfReplace("zi", "ㄗ") + strProcessed.selfReplace("zu", "ㄗㄨ") + strProcessed.selfReplace("a", "ㄚ") + strProcessed.selfReplace("e", "ㄜ") + strProcessed.selfReplace("o", "ㄛ") + strProcessed.selfReplace("q", "ㄑ") + strProcessed.selfReplace("2", "ˊ") + strProcessed.selfReplace("3", "ˇ") + strProcessed.selfReplace("4", "ˋ") + strProcessed.selfReplace("5", "˙") + strProcessed.selfReplace("1", "") } // Step 3: Add Formatted Pragma, the Sorted Header: @@ -509,14 +501,10 @@ extension String { strProcessed = hdrFormatted + strProcessed // Add Sorted Header // Step 4: Deduplication. - arrData = strProcessed.components(separatedBy: "\n") - strProcessed = "" // Reset its value + let arrData = strProcessed.split(separator: "\n") // 下面兩行的 reversed 是首尾顛倒,免得破壞最新的 override 資訊。 let arrDataDeduplicated = Array(NSOrderedSet(array: arrData.reversed()).array as! [String]) - for lineData in arrDataDeduplicated.reversed() { - strProcessed += lineData - strProcessed += "\n" - } + strProcessed = arrDataDeduplicated.reversed().joined(separator: "\n") + "\n" // Step 5: Remove duplicated newlines at the end of the file. strProcessed.regReplace(pattern: "\\n+", replaceWith: "\n")