The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .gitignore
├── 10W次性能对比.png
├── 10W次性能对比_20170922.png
├── 10W次性能对比_20180302.png
├── 10W次性能对比_20180306.png
├── 10W次性能对比_20191014.png
├── 10W次性能对比_20200411.png
├── 10W次性能对比_20200524.png
├── 10W次性能对比_20200901.png
├── LICENSE
├── README.MD
├── cpp
    ├── ToolGood.Words.sln
    └── ToolGood.Words
    │   ├── BaseSearchEx.cpp
    │   ├── IntDictionary.cpp
    │   ├── ToolGood.Words.cpp
    │   ├── ToolGood.Words.vcxproj
    │   ├── TrieNode.h
    │   ├── WordsSearchEx.cpp
    │   └── WordsSearchResult.cpp
├── csharp
    ├── .gitignore
    ├── ToolGood.PinYin.Build
    │   ├── CompressionUtil.cs
    │   ├── FirstPinyin
    │   │   ├── PinyinDictBuild.cs
    │   │   ├── Program2.cs
    │   │   └── WordsSearchExBuild.cs
    │   ├── Pinyin
    │   │   ├── PinyinDictBuild.cs
    │   │   └── WordsSearchExBuild.cs
    │   ├── Program.cs
    │   ├── ToolGood.PinYin.Build.csproj
    │   └── dict
    │   │   ├── _py.txt
    │   │   ├── _py2.txt
    │   │   ├── _pyName.txt
    │   │   ├── _word.txt
    │   │   ├── _wordRevise.txt
    │   │   ├── dict-zi.js
    │   │   └── phrases-dict.js
    ├── ToolGood.PinYin.Pretreatment
    │   ├── HtmlToText.cs
    │   ├── MozillazgPinyinHelper.cs
    │   ├── Program.cs
    │   ├── ScelImport
    │   │   ├── BaseImport.cs
    │   │   ├── Entities
    │   │   │   ├── BuildType.cs
    │   │   │   ├── Code.cs
    │   │   │   ├── CodeType.cs
    │   │   │   ├── WordLibrary.cs
    │   │   │   └── WordLibraryList.cs
    │   │   ├── Helpers
    │   │   │   ├── BinFileHelper.cs
    │   │   │   ├── CollectionHelper.cs
    │   │   │   └── DictionaryHelper.cs
    │   │   ├── Interface.cs
    │   │   └── SougouPinyinScel.cs
    │   ├── TextLine.cs
    │   ├── TextNode.cs
    │   ├── ToolGood.PinYin.Pretreatment.csproj
    │   ├── WebClientEx.cs
    │   ├── phrase-pinyin-data
    │   │   ├── cc_cedict.txt
    │   │   ├── large_pinyin.txt
    │   │   ├── overwrite.txt
    │   │   ├── pinyin.txt
    │   │   ├── zdic_cibs.txt
    │   │   └── zdic_cybs.txt
    │   └── pinyin-data
    │   │   ├── kHanyuPinlu.txt
    │   │   ├── kHanyuPinyin.txt
    │   │   ├── kMandarin.txt
    │   │   ├── kMandarin_8105.txt
    │   │   ├── kMandarin_overwrite.txt
    │   │   ├── kXHC1983.txt
    │   │   ├── kanji.txt
    │   │   ├── nonCJKUI.txt
    │   │   ├── overwrite.txt
    │   │   ├── pinyin.txt
    │   │   └── zdic.txt
    ├── ToolGood.Transformation.Build
    │   ├── CompressionUtil.cs
    │   ├── Program.cs
    │   ├── ScelImport
    │   │   ├── BaseImport.cs
    │   │   ├── Entities
    │   │   │   ├── BuildType.cs
    │   │   │   ├── Code.cs
    │   │   │   ├── CodeType.cs
    │   │   │   ├── WordLibrary.cs
    │   │   │   └── WordLibraryList.cs
    │   │   ├── Helpers
    │   │   │   ├── BinFileHelper.cs
    │   │   │   ├── CollectionHelper.cs
    │   │   │   └── DictionaryHelper.cs
    │   │   ├── Interface.cs
    │   │   └── SougouPinyinScel.cs
    │   ├── ToolGood.Transformation.Build.csproj
    │   └── dict
    │   │   ├── HKVariants.txt
    │   │   ├── HKVariantsPhrases.txt
    │   │   ├── HKVariantsRevPhrases.txt
    │   │   ├── JPShinjitaiCharacters.txt
    │   │   ├── JPShinjitaiPhrases.txt
    │   │   ├── JPVariants.txt
    │   │   ├── STCharacters.txt
    │   │   ├── STPhrases.txt
    │   │   ├── STPhrases_Ext.txt
    │   │   ├── TSCharacters.txt
    │   │   ├── TSPhrases.txt
    │   │   ├── TSPhrases_Ext.txt
    │   │   ├── TWPhrasesIT.txt
    │   │   ├── TWPhrasesName.txt
    │   │   ├── TWPhrasesOther.txt
    │   │   ├── TWVariants.txt
    │   │   └── TWVariantsRevPhrases.txt
    ├── ToolGood.Words.Benchmark
    │   ├── BadWord.txt
    │   ├── Program.cs
    │   ├── SearchExs
    │   │   ├── StringSearchEx.cs
    │   │   ├── StringSearchExUnsafe.cs
    │   │   ├── StringSearchExUnsafe2.cs
    │   │   ├── WordsSearchEx.cs
    │   │   ├── WordsSearchExUnsafe.cs
    │   │   └── WordsSearchExUnsafe2.cs
    │   ├── Talk.txt
    │   └── ToolGood.Words.Benchmark.csproj
    ├── ToolGood.Words.Contrast
    │   ├── BadWord.txt
    │   ├── FilterTest
    │   │   ├── FastFilter.cs
    │   │   ├── HashHelpers.cs
    │   │   ├── HashStringSet.cs
    │   │   ├── IWordFilter.cs
    │   │   └── TrieFilter.cs
    │   ├── Program.cs
    │   ├── Talk.txt
    │   ├── ToolGood.Words.Contrast.csproj
    │   └── word
    │   │   ├── Dict.cs
    │   │   └── WordTest.cs
    ├── ToolGood.Words.ReferenceHelper
    │   ├── CompressionUtil.cs
    │   ├── Form1.Designer.cs
    │   ├── Form1.cs
    │   ├── Form1.resx
    │   ├── Pinyin
    │   │   ├── PinyinDictBuild.cs
    │   │   └── WordsSearchExBuild.cs
    │   ├── PinyinBuild.cs
    │   ├── PinyinNameBuild.cs
    │   ├── Program.cs
    │   ├── Properties
    │   │   └── PublishProfiles
    │   │   │   └── FolderProfile.pubxml
    │   ├── ToolGood.Words.ReferenceHelper.csproj
    │   ├── TransformationBuild.cs
    │   └── dict
    │   │   ├── HKVariants.txt
    │   │   ├── HKVariantsPhrases.txt
    │   │   ├── HKVariantsRevPhrases.txt
    │   │   ├── JPShinjitaiCharacters.txt
    │   │   ├── JPShinjitaiPhrases.txt
    │   │   ├── JPVariants.txt
    │   │   ├── STCharacters.txt
    │   │   ├── STPhrases.txt
    │   │   ├── STPhrases_Ext.txt
    │   │   ├── TSCharacters.txt
    │   │   ├── TSPhrases.txt
    │   │   ├── TSPhrases_Ext.txt
    │   │   ├── TWPhrasesIT.txt
    │   │   ├── TWPhrasesName.txt
    │   │   ├── TWPhrasesOther.txt
    │   │   ├── TWVariants.txt
    │   │   ├── TWVariantsRevPhrases.txt
    │   │   ├── _allPinyin.txt
    │   │   ├── _pyName.txt
    │   │   └── pinyinSrc
    │   │       ├── _py.txt
    │   │       ├── _py2.txt
    │   │       ├── _pyName.txt
    │   │       ├── _word.txt
    │   │       ├── _wordRevise.txt
    │   │       ├── dict-zi.js
    │   │       └── phrases-dict.js
    ├── ToolGood.Words.Test
    │   ├── IllegalWords
    │   │   └── IllegalWordsTest.cs
    │   ├── IssuesTest.cs
    │   ├── PetaTest.cs
    │   ├── PinYin
    │   │   └── PinYinTest.cs
    │   ├── PinyinMatchTest
    │   │   └── PinyinMatchTest.cs
    │   ├── Program.cs
    │   ├── StringSearchTest
    │   │   ├── StringSearchEx2Test.cs
    │   │   ├── StringSearchEx3Test.cs
    │   │   ├── StringSearchExTest.cs
    │   │   └── StringSearchTest.cs
    │   ├── TextMatchTest
    │   │   ├── StringMatchExTest.cs
    │   │   ├── StringMatchTest.cs
    │   │   ├── WordsMatchExTest.cs
    │   │   └── WordsMatchTest.cs
    │   ├── ToolGood.Words.Test.csproj
    │   ├── TypoConverter
    │   │   └── TypoConverterTest.cs
    │   ├── WordHelper
    │   │   └── WordHelperTest.cs
    │   ├── WordsSearchTest
    │   │   ├── WordsSearchEx2Test.cs
    │   │   ├── WordsSearchEx3Test.cs
    │   │   ├── WordsSearchExTest.cs
    │   │   └── WordsSearchTest.cs
    │   ├── _Illegal
    │   │   ├── IllegalKeywords.txt
    │   │   └── IllegalUrls.txt
    │   └── _texts
    │   │   ├── 147种水果的名字.txt
    │   │   ├── 765个世界主要城市.txt
    │   │   ├── dict.txt
    │   │   ├── 世界所有国家及其首都.txt
    │   │   ├── 中医中药大全【官方推荐】.txt
    │   │   ├── 书法词汇大全【官方推荐】.txt
    │   │   ├── 二人转词汇大全【官方推荐】.txt
    │   │   ├── 亲戚称呼.txt
    │   │   ├── 保险词汇【官方推荐】.txt
    │   │   ├── 全国省市区县地名.txt
    │   │   ├── 农业词汇大全【官方推荐】.txt
    │   │   ├── 冰雪名词.txt
    │   │   ├── 冶金词汇大全【官方推荐】.txt
    │   │   ├── 动漫名称大全.txt
    │   │   ├── 动物词汇大全【官方推荐】.txt
    │   │   ├── 化学化工词汇大全【官方推荐】.txt
    │   │   ├── 化学品名.txt
    │   │   ├── 医学词汇大全.txt
    │   │   ├── 医疗器械大全【官方推荐】.txt
    │   │   ├── 园林花草名称词库.txt
    │   │   ├── 国家和地区词库.txt
    │   │   ├── 地名词库.txt
    │   │   ├── 地理名词.txt
    │   │   ├── 地理地质词汇大全【官方推荐】.txt
    │   │   ├── 地表水文词库.txt
    │   │   ├── 基础数学用词.txt
    │   │   ├── 天文学天体类词库.txt
    │   │   ├── 天文词汇大全【官方推荐】.txt
    │   │   ├── 家居装修词汇大全【官方推荐】.txt
    │   │   ├── 建筑词汇大全【官方推荐】.txt
    │   │   ├── 影视歌名库.txt
    │   │   ├── 恒星、银河系词库.txt
    │   │   ├── 搜狗标准词库.txt
    │   │   ├── 数学词库EXTEND版.txt
    │   │   ├── 数学词汇大全【官方推荐】.txt
    │   │   ├── 日剧、动漫大全【官方推荐】.txt
    │   │   ├── 时空类词汇总库.txt
    │   │   ├── 最新流行新歌 新专辑.txt
    │   │   ├── 最新车型大全【官方推荐】.txt
    │   │   ├── 最详细的全国地名大全.txt
    │   │   ├── 机械词汇大全【官方推荐】.txt
    │   │   ├── 植物名词大全.txt
    │   │   ├── 植物学名词术语.txt
    │   │   ├── 植物词汇大全【官方推荐】.txt
    │   │   ├── 气象与降水名词.txt
    │   │   ├── 气象词汇大全【官方推荐】.txt
    │   │   ├── 水利词汇大全【官方推荐】.txt
    │   │   ├── 法律词汇大全【官方推荐】.txt
    │   │   ├── 流行网络小说词库.txt
    │   │   ├── 测绘词汇大全【官方推荐】.txt
    │   │   ├── 热门电影大全.txt
    │   │   ├── 物流词汇大全【官方推荐】.txt
    │   │   ├── 物理词汇大全【官方推荐】.txt
    │   │   ├── 生物词汇大全【官方推荐】.txt
    │   │   ├── 电力词汇大全【官方推荐】.txt
    │   │   ├── 电子商务专用词库【官方推荐】.txt
    │   │   ├── 电子词汇大全【官方推荐】.txt
    │   │   ├── 电视剧名大全.txt
    │   │   ├── 真菌类名词.txt
    │   │   ├── 经济生活词汇.txt
    │   │   ├── 美容词汇大全【官方推荐】.txt
    │   │   ├── 联合国成员国名单.txt
    │   │   ├── 艺术专用词汇.txt
    │   │   ├── 花卉名词.txt
    │   │   ├── 花木名称大全.txt
    │   │   ├── 虫蛇类名词.txt
    │   │   ├── 计算机词汇大全【官方推荐】.txt
    │   │   ├── 财经金融词汇大全【官方推荐】.txt
    │   │   ├── 颜色名称.txt
    │   │   ├── 风云雨雪雾雷虹词库.txt
    │   │   └── 饮食大全【官方推荐】.txt
    ├── ToolGood.Words.sln
    ├── ToolGood.Words
    │   ├── NumberTypoHelper.cs
    │   ├── Properties
    │   │   └── ToolGood.Words.snk
    │   ├── TextMatch
    │   │   ├── PinyinMatch.T.cs
    │   │   ├── PinyinMatch.cs
    │   │   ├── StringMatch.cs
    │   │   ├── StringMatchEx.cs
    │   │   ├── WordsMatch.cs
    │   │   └── WordsMatchEx.cs
    │   ├── TextSearch
    │   │   ├── IllegalWordsSearch.cs
    │   │   ├── Result
    │   │   │   ├── IllegalWordsSearchResult.cs
    │   │   │   └── WordsSearchResult.cs
    │   │   ├── StringSearch.cs
    │   │   ├── StringSearchEx.cs
    │   │   ├── StringSearchEx2.cs
    │   │   ├── StringSearchEx3.cs
    │   │   ├── WordsSearch.cs
    │   │   ├── WordsSearchEx.cs
    │   │   ├── WordsSearchEx2.cs
    │   │   └── WordsSearchEx3.cs
    │   ├── ToolGood.Words.csproj
    │   ├── WordsHelper.cs
    │   ├── dict
    │   │   ├── pyIndex.txt.br
    │   │   ├── pyIndex2.txt.br
    │   │   ├── pyName.txt.br
    │   │   ├── pyWords.txt.br
    │   │   ├── s2t.dat.br
    │   │   ├── t2hk.dat.br
    │   │   ├── t2s.dat.br
    │   │   └── t2tw.dat.br
    │   └── internals
    │   │   ├── BaseMatch.cs
    │   │   ├── BaseMatchEx.cs
    │   │   ├── BasePinyinMatch.cs
    │   │   ├── BaseSearch.cs
    │   │   ├── BaseSearchEx.cs
    │   │   ├── BaseSearchEx2.cs
    │   │   ├── BaseSearchEx3.cs
    │   │   ├── IntDictionary.cs
    │   │   ├── NumberConventer.cs
    │   │   ├── PinyinDict.cs
    │   │   ├── Translate.cs
    │   │   ├── TrieNode.cs
    │   │   ├── TrieNode2.cs
    │   │   ├── TrieNode3.cs
    │   │   ├── TrieNode3Ex.cs
    │   │   └── TrieNodeEx.cs
    └── lib
    │   ├── ChineseConverter.dll
    │   ├── ChnCharInfo.dll
    │   ├── PinYinData
    │       ├── 0x9FA6.txt
    │       ├── _pinyin.txt
    │       ├── dict-ci.txt
    │       ├── dict-pinyin.txt
    │       ├── dict-zi-frequent.txt
    │       ├── dict-zi-infrequent.txt
    │       ├── mozillazg_pinyin.txt
    │       ├── words_0.txt
    │       ├── words_1.txt
    │       ├── words_2.txt
    │       ├── words_3.txt
    │       ├── words_4.txt
    │       └── words_5.txt
    │   └── Scel
    │       ├── 147种水果的名字.scel
    │       ├── 765个世界主要城市.scel
    │       ├── 世界所有国家及其首都.scel
    │       ├── 中医中药大全【官方推荐】.scel
    │       ├── 书法词汇大全【官方推荐】.scel
    │       ├── 二人转词汇大全【官方推荐】.scel
    │       ├── 亲戚称呼.scel
    │       ├── 保险词汇【官方推荐】.scel
    │       ├── 全国省市区县地名.scel
    │       ├── 农业词汇大全【官方推荐】.scel
    │       ├── 冰雪名词.scel
    │       ├── 冶金词汇大全【官方推荐】.scel
    │       ├── 动物词汇大全【官方推荐】.scel
    │       ├── 化学化工词汇大全【官方推荐】.scel
    │       ├── 化学品名.scel
    │       ├── 医学词汇大全.scel
    │       ├── 医疗器械大全【官方推荐】.scel
    │       ├── 园林花草名称词库.scel
    │       ├── 国家和地区词库.scel
    │       ├── 地名词库.scel
    │       ├── 地理名词.scel
    │       ├── 地理地质词汇大全【官方推荐】.scel
    │       ├── 地表水文词库.scel
    │       ├── 基础数学用词.scel
    │       ├── 天文学天体类词库.scel
    │       ├── 天文词汇大全【官方推荐】.scel
    │       ├── 家居装修词汇大全【官方推荐】.scel
    │       ├── 建筑词汇大全【官方推荐】.scel
    │       ├── 恒星、银河系词库.scel
    │       ├── 搜狗标准词库.scel
    │       ├── 数学词库EXTEND版.scel
    │       ├── 数学词汇大全【官方推荐】.scel
    │       ├── 时空类词汇总库.scel
    │       ├── 最新车型大全【官方推荐】.scel
    │       ├── 最详细的全国地名大全.scel
    │       ├── 机械词汇大全【官方推荐】.scel
    │       ├── 植物名词大全.scel
    │       ├── 植物学名词术语.scel
    │       ├── 植物词汇大全【官方推荐】.scel
    │       ├── 气象与降水名词.scel
    │       ├── 气象词汇大全【官方推荐】.scel
    │       ├── 水利词汇大全【官方推荐】.scel
    │       ├── 法律词汇大全【官方推荐】.scel
    │       ├── 测绘词汇大全【官方推荐】.scel
    │       ├── 物流词汇大全【官方推荐】.scel
    │       ├── 物理词汇大全【官方推荐】.scel
    │       ├── 生物词汇大全【官方推荐】.scel
    │       ├── 电力词汇大全【官方推荐】.scel
    │       ├── 电子商务专用词库【官方推荐】.scel
    │       ├── 电子词汇大全【官方推荐】.scel
    │       ├── 真菌类名词.scel
    │       ├── 经济生活词汇.scel
    │       ├── 美容词汇大全【官方推荐】.scel
    │       ├── 联合国成员国名单.scel
    │       ├── 艺术专用词汇.scel
    │       ├── 花卉名词.scel
    │       ├── 花木名称大全.scel
    │       ├── 虫蛇类名词.scel
    │       ├── 计算机词汇大全【官方推荐】.scel
    │       ├── 财经金融词汇大全【官方推荐】.scel
    │       ├── 颜色名称.scel
    │       ├── 风云雨雪雾雷虹词库.scel
    │       └── 饮食大全【官方推荐】.scel
├── golang
    ├── ToolGood
    │   └── Words
    │   │   ├── IllegalWordsSearch.go
    │   │   ├── IllegalWordsSearchResult.go
    │   │   ├── StringSearch.go
    │   │   ├── StringSearchEx.go
    │   │   ├── WordsSearch.go
    │   │   ├── WordsSearchEx.go
    │   │   ├── WordsSearchResult.go
    │   │   └── internals
    │   │       ├── BaseSearchEx.go
    │   │       ├── Dict.go
    │   │       ├── TrieNode.go
    │   │       ├── TrieNode2.go
    │   │       ├── TrieNodeEx.go
    │   │       └── TrieNodes.go
    └── test.go
├── java
    ├── sensi_words.txt
    └── toolgood.words
    │   ├── README.MD
    │   ├── build.bat
    │   ├── mvn-build.bat
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │           ├── java
    │           │   └── toolgood
    │           │   │   └── words
    │           │   │       ├── IllegalWordsSearch.java
    │           │   │       ├── IllegalWordsSearchResult.java
    │           │   │       ├── NumHelper.java
    │           │   │       ├── PinyinMatch.java
    │           │   │       ├── PinyinMatch2.java
    │           │   │       ├── StringMatch.java
    │           │   │       ├── StringMatchEx.java
    │           │   │       ├── StringSearch.java
    │           │   │       ├── StringSearchEx.java
    │           │   │       ├── StringSearchEx2.java
    │           │   │       ├── WordsHelper.java
    │           │   │       ├── WordsMatch.java
    │           │   │       ├── WordsMatchEx.java
    │           │   │       ├── WordsSearch.java
    │           │   │       ├── WordsSearchEx.java
    │           │   │       ├── WordsSearchEx2.java
    │           │   │       ├── WordsSearchResult.java
    │           │   │       └── internals
    │           │   │           ├── BaseMatch.java
    │           │   │           ├── BaseMatchEx.java
    │           │   │           ├── BasePinyinMatch.java
    │           │   │           ├── BaseSearch.java
    │           │   │           ├── BaseSearchEx.java
    │           │   │           ├── BaseSearchEx2.java
    │           │   │           ├── BaseSearchEx3.java
    │           │   │           ├── IntDictionary.java
    │           │   │           ├── PinyinDict.java
    │           │   │           ├── Translate.java
    │           │   │           ├── TrieNode.java
    │           │   │           ├── TrieNode2.java
    │           │   │           ├── TrieNode3.java
    │           │   │           ├── TrieNode3Ex.java
    │           │   │           ├── TrieNodeEx.java
    │           │   │           └── TwoTuple.java
    │           └── resources
    │           │   ├── pyIndex.txt
    │           │   ├── pyName.txt
    │           │   ├── pyWords.txt
    │           │   ├── s2t.dat
    │           │   ├── t2hk.dat
    │           │   ├── t2s.dat
    │           │   └── t2tw.dat
    │       └── test
    │           └── java
    │               └── toolgood
    │                   └── words
    │                       └── DemoApplication.java
├── javascript
    ├── README.MD
    ├── ToolGood.Words.Pinyin.js
    ├── ToolGood.Words.Pinyin.min.js
    ├── ToolGood.Words.StringSearch.js
    ├── ToolGood.Words.StringSearch.min.js
    ├── ToolGood.Words.Translate.js
    ├── ToolGood.Words.Translate.min.js
    ├── ToolGood.Words.WordsSearch.js
    ├── ToolGood.Words.WordsSearch.min.js
    └── test.html
├── python
    ├── README.MD
    ├── ToolGood.Words.Pinyin.py
    ├── ToolGood.Words.StringSearch.py
    ├── ToolGood.Words.Translate.py
    └── ToolGood.Words.WordsSearch.py
├── 支撑压力指标
    ├── 0.png
    ├── 1.png
    ├── 2.png
    ├── 3.png
    ├── 4.png
    └── readme.md
└── 资源包生成器
    ├── dict
        ├── HKVariants.txt
        ├── HKVariantsPhrases.txt
        ├── HKVariantsRevPhrases.txt
        ├── JPShinjitaiCharacters.txt
        ├── JPShinjitaiPhrases.txt
        ├── JPVariants.txt
        ├── STCharacters.txt
        ├── STPhrases.txt
        ├── STPhrases_Ext.txt
        ├── TSCharacters.txt
        ├── TSPhrases.txt
        ├── TSPhrases_Ext.txt
        ├── TWPhrasesIT.txt
        ├── TWPhrasesName.txt
        ├── TWPhrasesOther.txt
        ├── TWVariants.txt
        ├── TWVariantsRevPhrases.txt
        ├── _allPinyin.txt
        ├── _pyName.txt
        └── pinyinSrc
        │   ├── _py.txt
        │   ├── _py2.txt
        │   ├── _pyName.txt
        │   ├── _word.txt
        │   └── _wordRevise.txt
    └── 资源包生成器.zip


/10W次性能对比.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比.png


--------------------------------------------------------------------------------
/10W次性能对比_20170922.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20170922.png


--------------------------------------------------------------------------------
/10W次性能对比_20180302.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20180302.png


--------------------------------------------------------------------------------
/10W次性能对比_20180306.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20180306.png


--------------------------------------------------------------------------------
/10W次性能对比_20191014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20191014.png


--------------------------------------------------------------------------------
/10W次性能对比_20200411.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20200411.png


--------------------------------------------------------------------------------
/10W次性能对比_20200524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20200524.png


--------------------------------------------------------------------------------
/10W次性能对比_20200901.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/10W次性能对比_20200901.png


--------------------------------------------------------------------------------
/cpp/ToolGood.Words.sln:
--------------------------------------------------------------------------------
 1 | 
 2 | Microsoft Visual Studio Solution File, Format Version 12.00
 3 | # Visual Studio Version 17
 4 | VisualStudioVersion = 17.11.35312.102
 5 | MinimumVisualStudioVersion = 10.0.40219.1
 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ToolGood.Words", "ToolGood.Words\ToolGood.Words.vcxproj", "{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}"
 7 | EndProject
 8 | Global
 9 | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | 		Debug|x64 = Debug|x64
11 | 		Debug|x86 = Debug|x86
12 | 		Release|x64 = Release|x64
13 | 		Release|x86 = Release|x86
14 | 	EndGlobalSection
15 | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Debug|x64.ActiveCfg = Debug|x64
17 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Debug|x64.Build.0 = Debug|x64
18 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Debug|x86.ActiveCfg = Debug|Win32
19 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Debug|x86.Build.0 = Debug|Win32
20 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Release|x64.ActiveCfg = Release|x64
21 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Release|x64.Build.0 = Release|x64
22 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Release|x86.ActiveCfg = Release|Win32
23 | 		{AB38D1D8-AAC3-450E-9563-29FB3339ADB3}.Release|x86.Build.0 = Release|Win32
24 | 	EndGlobalSection
25 | 	GlobalSection(SolutionProperties) = preSolution
26 | 		HideSolutionNode = FALSE
27 | 	EndGlobalSection
28 | 	GlobalSection(ExtensibilityGlobals) = postSolution
29 | 		SolutionGuid = {143AC62E-6044-4A30-9652-2DC31C3AEABE}
30 | 	EndGlobalSection
31 | EndGlobal
32 | 


--------------------------------------------------------------------------------
/cpp/ToolGood.Words/IntDictionary.cpp:
--------------------------------------------------------------------------------
  1 | #pragma once
  2 | 
  3 | #include <map>
  4 | #include <vector>
  5 | #include <string>
  6 | #include <algorithm>
  7 | using std::map;
  8 | using std::vector;
  9 | using std::string;
 10 | using namespace std;
 11 | 
 12 | 
 13 | typedef pair<unsigned short, int> PAIR;
 14 | //int cmp2(const PAIR& x, const PAIR& y) {
 15 | //	return x.first < y.first;
 16 | //}
 17 | 
 18 | class IntDictionary
 19 | {
 20 | public:
 21 | 	unsigned short* _keys;
 22 | 	int* _values;
 23 | 	int last;
 24 | 
 25 | public:
 26 | 	
 27 | 	IntDictionary()
 28 | 	{
 29 | 	
 30 | 	}
 31 | 	IntDictionary(unsigned short* keys, int* values, int len)
 32 | 	{
 33 | 		_keys = keys;
 34 | 		_values = values;
 35 | 		last = len - 1;
 36 | 	}
 37 | 	IntDictionary(map<unsigned short, int> dict)
 38 | 	{
 39 | 		int len = dict.size();
 40 | 		_keys = new unsigned short[len];
 41 | 		_values = new int[len];
 42 | 		last = len - 1;
 43 | 
 44 | 		vector<PAIR> vec(dict.begin(), dict.end());
 45 | 		sort(vec.begin(), vec.end());
 46 | 
 47 | 		for (size_t i = 0; i < vec.size(); i++)
 48 | 		{
 49 | 			_keys[i] = vec[i].first;
 50 | 			_values[i] = vec[i].second;
 51 | 		}		
 52 | 		last = len - 1;
 53 | 	}
 54 | 
 55 | 
 56 | 	bool TryGetValue(unsigned short key, int& value)
 57 | 	{
 58 | 		if (last == -1) {
 59 | 			value = 0;
 60 | 			return false;
 61 | 		}
 62 | 		if (_keys[0] == key) {
 63 | 			value = _values[0];
 64 | 			return true;
 65 | 		}
 66 | 		else if (last == 0 || _keys[0] > key) {
 67 | 			value = 0;
 68 | 			return false;
 69 | 		}
 70 | 
 71 | 		if (_keys[last] == key) {
 72 | 			value = _values[last];
 73 | 			return true;
 74 | 		}
 75 | 		else if (_keys[last] < key) {
 76 | 			value = 0;
 77 | 			return false;
 78 | 		}
 79 | 
 80 | 		int left = 1;
 81 | 		int right = last - 1;
 82 | 		while (left <= right) {
 83 | 			int mid = (left + right) >> 1;
 84 | 			int d = _keys[mid] - key;
 85 | 
 86 | 			if (d == 0) {
 87 | 				value = _values[mid];
 88 | 				return true;
 89 | 			}
 90 | 			else if (d > 0) {
 91 | 				right = mid - 1;
 92 | 			}
 93 | 			else {
 94 | 				left = mid + 1;
 95 | 			}
 96 | 		}
 97 | 		value = 0;
 98 | 		return false;
 99 | 	}
100 | };


--------------------------------------------------------------------------------
/cpp/ToolGood.Words/ToolGood.Words.cpp:
--------------------------------------------------------------------------------
 1 | // ToolGood.Words.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
 2 | //
 3 | 
 4 | #include <iostream>
 5 | #include "WordsSearchEx.cpp"
 6 | 
 7 | int main()
 8 | {
 9 | 	WordsSearchEx search;
10 | 	vector<string> ks;
11 | 	ks.push_back("中国");
12 | 	ks.push_back("国人");
13 | 	ks.push_back("zg人");
14 | 
15 | 	search.SetKeywords(ks);
16 | 	auto r = search.FindFirst("我是中国人");
17 | 
18 | 	std::cout << "Hello World!\n";
19 | }
20 | 
21 | // 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
22 | // 调试程序: F5 或调试 >“开始调试”菜单
23 | 
24 | // 入门使用技巧: 
25 | //   1. 使用解决方案资源管理器窗口添加/管理文件
26 | //   2. 使用团队资源管理器窗口连接到源代码管理
27 | //   3. 使用输出窗口查看生成输出和其他消息
28 | //   4. 使用错误列表窗口查看错误
29 | //   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
30 | //   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
31 | 


--------------------------------------------------------------------------------
/cpp/ToolGood.Words/TrieNode.h:
--------------------------------------------------------------------------------
 1 | #pragma 
 2 | #include <map>
 3 | #include <vector>
 4 | using std::map;
 5 | using std::vector;
 6 | class TrieNode
 7 | {
 8 | public:
 9 | 	int Index;
10 | 	int Layer;
11 | 	wchar_t Char;
12 | 	vector<int> Results;
13 | 	map<wchar_t, TrieNode> m_values;
14 | 	TrieNode* Failure;
15 | 	TrieNode* Parent;
16 | 	bool IsWildcard;
17 | 	int WildcardLayer;
18 | 	bool HasWildcard;
19 | 
20 | 	TrieNode() {
21 | 		Failure = NULL;
22 | 		Parent = NULL;
23 | 	}
24 | 
25 | 	TrieNode Add(wchar_t c)
26 | 	{
27 | 		auto find = m_values.find(c);
28 | 		if (find != m_values.end())
29 | 		{
30 | 			return	find->second;
31 | 		}
32 | 		TrieNode node;
33 | 		node.Parent = this;
34 | 		node.Char = c;
35 | 		m_values[c] = node;
36 | 		return node;
37 | 	}
38 | 	void SetResults(int index)
39 | 	{
40 | 		Results.push_back(index);
41 | 	}
42 | };
43 | 
44 | #pragma once
45 | 


--------------------------------------------------------------------------------
/cpp/ToolGood.Words/WordsSearchEx.cpp:
--------------------------------------------------------------------------------
  1 | #include "BaseSearchEx.cpp";
  2 | #include <vector>
  3 | #include <string>
  4 | #include "WordsSearchResult.cpp"
  5 | using std::vector;
  6 | using std::string;
  7 | 
  8 | class WordsSearchEx :BaseSearchEx
  9 | {
 10 | public:
 11 | 	WordsSearchEx() = default;
 12 | 
 13 | 	void SetKeywords(vector<string> _keywords) {
 14 | 		this->SetKeywords2(_keywords);
 15 | 	}
 16 | 
 17 | 
 18 | 	vector<WordsSearchResult> FindAll(string text)
 19 | 	{
 20 | 		vector<WordsSearchResult> result;
 21 | 		int p = 0;
 22 | 		for (size_t i = 0; i < text.size(); i++)
 23 | 		{
 24 | 			char t = _dict[text[i]];
 25 | 			if (t == 0) {
 26 | 				p = 0;
 27 | 				continue;
 28 | 			}
 29 | 			int next;
 30 | 			if (p == 0 || _nextIndex[p].TryGetValue(t, next) == false)
 31 | 			{
 32 | 				next = _first[t];
 33 | 			}
 34 | 			if (next != 0) {
 35 | 				for (int j = _end[next]; j < _end[next + 1]; j++) {
 36 | 					int index = _resultIndex[j];
 37 | 					int len = _keywordLengths[index];
 38 | 					int st = i + 1 - len;
 39 | 					WordsSearchResult r;
 40 | 					r.Success = true;
 41 | 					r.Start = st;
 42 | 					r.End = i;
 43 | 					r.Keyword = text.substr(st, len);
 44 | 					result.push_back(r);
 45 | 				}
 46 | 			}
 47 | 			p = next;
 48 | 		}
 49 | 		return result;
 50 | 	}
 51 | 
 52 | 	WordsSearchResult FindFirst(string text)
 53 | 	{
 54 | 		int p = 0;
 55 | 		for (size_t i = 0; i < text.size(); i++)
 56 | 		{
 57 | 			char t = _dict[text[i]];
 58 | 			if (t == 0) {
 59 | 				p = 0;
 60 | 				continue;
 61 | 			}
 62 | 			int next;
 63 | 			if (p == 0 || _nextIndex[p].TryGetValue(t, next) == false)
 64 | 			{
 65 | 				next = _first[t];
 66 | 			}
 67 | 
 68 | 			if (next != 0) {
 69 | 				for (int j = _end[next]; j < _end[next + 1]; j++) {
 70 | 					int index = _resultIndex[j];
 71 | 					int len = _keywordLengths[index];
 72 | 					int st = i + 1 - len;
 73 | 					WordsSearchResult r;
 74 | 					r.Start = st;
 75 | 					r.End = i;
 76 | 					r.Keyword = text.substr(st, len);
 77 | 					return r;
 78 | 				}
 79 | 			}
 80 | 			p = next;
 81 | 		}
 82 | 		WordsSearchResult t;
 83 | 		return t;
 84 | 	}
 85 | 	bool ContainsAny(string text)
 86 | 	{
 87 | 		int p = 0;
 88 | 		for (size_t i = 0; i < text.size(); i++)
 89 | 		{
 90 | 			char t = _dict[text[i]];
 91 | 			if (t == 0) {
 92 | 				p = 0;
 93 | 				continue;
 94 | 			}
 95 | 			int next;
 96 | 			if (p == 0 || _nextIndex[p].TryGetValue(t, next) == false)
 97 | 			{
 98 | 				next = _first[t];
 99 | 			}
100 | 
101 | 			if (next != 0) {
102 | 				if (_end[next] < _end[next + 1]) {
103 | 					return true;
104 | 				}
105 | 			}
106 | 			p = next;
107 | 		}
108 | 		return false;
109 | 	}
110 | 
111 | };


--------------------------------------------------------------------------------
/cpp/ToolGood.Words/WordsSearchResult.cpp:
--------------------------------------------------------------------------------
 1 | #include <string>
 2 | using std::string;
 3 | 
 4 | class WordsSearchResult
 5 | {
 6 | public:
 7 | 	string Keyword;
 8 | 
 9 | 	int Start;
10 | 
11 | 	int End;
12 | 
13 | 	bool Success;
14 | };


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Build/FirstPinyin/WordsSearchExBuild.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.IO;
 4 | using System.Text;
 5 | using ToolGood.Words.internals;
 6 | 
 7 | namespace ToolGood.PinYin.Build.FirstPinyin
 8 | {
 9 |     public class WordsSearchExBuild2 : BaseSearchEx
10 |     {
11 |         public void SaveFile(BinaryWriter bw)
12 |         {
13 |             byte[] _keywordsLengths = new byte[_keywordLengths.Length];
14 |             for (int i = 0; i < _keywordsLengths.Length; i++) {
15 |                 _keywordsLengths[i] = (byte)_keywordLengths[i];
16 |             }
17 |             bw.Write(_keywordsLengths.Length);
18 |             bw.Write(_keywordsLengths);
19 | 
20 |             var bs = IntArrToByteArr(_dict);
21 |             bw.Write(bs.Length);
22 |             bw.Write(bs);
23 | 
24 |             bs = IntArrToByteArr(_first);
25 |             bw.Write(bs.Length);
26 |             bw.Write(bs);
27 | 
28 |             bs = IntArrToByteArr(_end);
29 |             bw.Write(bs.Length);
30 |             bw.Write(bs);
31 | 
32 |             bs = IntArrToByteArr(_resultIndex);
33 |             bw.Write(bs.Length);
34 |             bw.Write(bs);
35 | 
36 |             //List<int> Index = new List<int>() { 0 };
37 |             //List<ushort> keysList = new List<ushort>();
38 |             //List<int> valuesList = new List<int>();
39 |             //foreach (var dict in _nextIndex) {
40 |             //    var keys = dict.Keys;
41 |             //    var values = dict.Values;
42 |             //    keysList.AddRange(keys);
43 |             //    valuesList.AddRange(values);
44 |             //    Index.Add(keysList.Count);
45 |             //}
46 | 
47 |             //bs = IntArrToByteArr(Index.ToArray());
48 |             //bw.Write(bs.Length);
49 |             //bw.Write(bs);
50 | 
51 |             //bs = IntArrToByteArr(keysList.ToArray());
52 |             //bw.Write(bs.Length);
53 |             //bw.Write(bs);
54 | 
55 | 
56 |             //bs = IntArrToByteArr(valuesList.ToArray());
57 |             //bw.Write(bs.Length);
58 |             //bw.Write(bs);
59 | 
60 |             bw.Write(_nextIndex.Length);
61 |             foreach (var dict in _nextIndex) {
62 |                 var keys = dict.Keys;
63 |                 var values = dict.Values;
64 | 
65 |                 bs = IntArrToByteArr(keys);
66 |                 bw.Write(bs.Length);
67 |                 bw.Write(bs);
68 | 
69 |                 bs = IntArrToByteArr(values);
70 |                 bw.Write(bs.Length);
71 |                 bw.Write(bs);
72 |             }
73 |         }
74 | 
75 | 
76 |     }
77 | }
78 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Build/Pinyin/WordsSearchExBuild.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.ComponentModel.DataAnnotations.Schema;
 4 | using System.IO;
 5 | using System.Text;
 6 | using ToolGood.Words.internals;
 7 | 
 8 | namespace ToolGood.PinYin.Build.Pinyin
 9 | {
10 |     public class WordsSearchExBuild : BaseSearchEx
11 |     {
12 | 
13 |         public void SaveFile(BinaryWriter bw)
14 |         {
15 |             byte[] _keywordsLengths = new byte[_keywordLengths.Length];
16 |             for (int i = 0; i < _keywordsLengths.Length; i++) {
17 |                 _keywordsLengths[i] = (byte)_keywordLengths[i];
18 |             }
19 |             bw.Write(_keywordsLengths.Length);
20 |             bw.Write(_keywordsLengths);
21 | 
22 |             var bs = IntArrToByteArr(_dict);
23 |             bw.Write(bs.Length);
24 |             bw.Write(bs);
25 | 
26 |             bs = IntArrToByteArr(_first);
27 |             bw.Write(bs.Length);
28 |             bw.Write(bs);
29 | 
30 |             bs = IntArrToByteArr(_end);
31 |             bw.Write(bs.Length);
32 |             bw.Write(bs);
33 | 
34 |             bs = IntArrToByteArr(_resultIndex);
35 |             bw.Write(bs.Length);
36 |             bw.Write(bs);
37 | 
38 |             //List<int> Index = new List<int>() { 0 };
39 |             //List<ushort> keysList = new List<ushort>();
40 |             //List<int> valuesList = new List<int>();
41 |             //foreach (var dict in _nextIndex) {
42 |             //    var keys = dict.Keys;
43 |             //    var values = dict.Values;
44 |             //    keysList.AddRange(keys);
45 |             //    valuesList.AddRange(values);
46 |             //    Index.Add(keysList.Count);
47 |             //}
48 | 
49 |             //bs = IntArrToByteArr(Index.ToArray());
50 |             //bw.Write(bs.Length);
51 |             //bw.Write(bs);
52 | 
53 |             //bs = IntArrToByteArr(keysList.ToArray());
54 |             //bw.Write(bs.Length);
55 |             //bw.Write(bs);
56 | 
57 | 
58 |             //bs = IntArrToByteArr(valuesList.ToArray());
59 |             //bw.Write(bs.Length);
60 |             //bw.Write(bs);
61 | 
62 |             bw.Write(_nextIndex.Length);
63 |             foreach (var dict in _nextIndex) {
64 |                 var keys = dict.Keys;
65 |                 var values = dict.Values;
66 | 
67 |                 bs = IntArrToByteArr(keys);
68 |                 bw.Write(bs.Length);
69 |                 bw.Write(bs);
70 | 
71 |                 bs = IntArrToByteArr(values);
72 |                 bw.Write(bs.Length);
73 |                 bw.Write(bs);
74 |             }
75 |         }
76 | 
77 | 
78 |     }
79 | }
80 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Build/ToolGood.PinYin.Build.csproj:
--------------------------------------------------------------------------------
 1 | <Project Sdk="Microsoft.NET.Sdk">
 2 | 
 3 |   <PropertyGroup>
 4 |     <OutputType>Exe</OutputType>
 5 |     <TargetFramework>net8.0</TargetFramework>
 6 |   </PropertyGroup>
 7 | 
 8 |   <ItemGroup>
 9 |     <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies.net40" Version="1.0.3">
10 |       <PrivateAssets>all</PrivateAssets>
11 |       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
12 |     </PackageReference>
13 |     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
14 |   </ItemGroup>
15 | 
16 |   <ItemGroup>
17 |     <ProjectReference Include="..\ToolGood.Words\ToolGood.Words.csproj" />
18 |   </ItemGroup>
19 | 
20 |   <ItemGroup>
21 |     <None Update="dict\_py2.txt">
22 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
23 |     </None>
24 |     <None Update="dict\_py.txt">
25 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
26 |     </None>
27 |     <None Update="dict\_pyName.txt">
28 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
29 |     </None>
30 |     <None Update="dict\_word.txt">
31 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
32 |     </None>
33 |     <None Update="dict\_wordRevise.txt">
34 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
35 |     </None>
36 |   </ItemGroup>
37 | 
38 | </Project>
39 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Build/dict/_wordRevise.txt:
--------------------------------------------------------------------------------
1 | 秘鲁,bì,lǔ
2 | 第比利斯,dì,bǐ,lì,sī
3 | 天行,tiān,xíng


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/MozillazgPinyinHelper.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.IO;
 4 | using System.Text;
 5 | using System.Text.RegularExpressions;
 6 | using System.Linq;
 7 | 
 8 | namespace ToolGood.PinYin.Pretreatment
 9 | {
10 |     public class MozillazgPinyinHelper
11 |     {
12 |         public static void ToStandardization()
13 |         {
14 |             Console.WriteLine("mozillazg 合并 并 转成标准拼音格式文本");
15 |             if (File.Exists("mozillazg_pinyin.txt") == false) {
16 |                 Dictionary<string, List<string>> pysDict = new Dictionary<string, List<string>>();
17 |                 {
18 |                     var files = Directory.GetFiles("pinyin-data");
19 |                     foreach (var file in files) {
20 |                         var txt = File.ReadAllText(file);
21 |                         var lines = txt.Split('\n');
22 |                         foreach (var line in lines) {
23 |                             var t = Regex.Replace(line, "#.*", "").Replace("U+", "").Trim();
24 |                             if (string.IsNullOrEmpty(t)) { continue; }
25 | 
26 |                             var sp = Regex.Replace(line, "(->|=>).*", "").Replace("U+", "").Split(" ,:#\r\n\t?".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
27 | 
28 |                             List<string> pys = new List<string>();
29 |                             for (int i = 1; i < sp.Length - 1; i++) {
30 |                                 pys.Add(sp[i]);
31 |                             }
32 |                             pysDict[sp.Last()] = pys;
33 |                         }
34 |                     }
35 |                 }
36 |                 {
37 |                     var txt = File.ReadAllText("pinyin-data\\pinyin.txt");
38 |                     var lines = txt.Split('\n');
39 | 
40 |                     foreach (var line in lines) {
41 |                         var t = Regex.Replace(line, "#.*", "").Replace("U+", "").Trim();
42 |                         if (string.IsNullOrEmpty(t)) { continue; }
43 |                         var sp = Regex.Replace(line, "(->|=>).*", "").Replace("U+", "").Split(" ,:#\r\n\t?".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
44 | 
45 |                         List<string> pys = new List<string>();
46 |                         for (int i = 1; i < sp.Length - 1; i++) {
47 |                             pys.Add(sp[i]);
48 |                         }
49 |                         pysDict[sp.Last()] = pys;
50 |                     }
51 |                 }
52 |                 List<string> ls = new List<string>();
53 |                 foreach (var item in pysDict) {
54 |                     ls.Add(
quot;{item.Key} {string.Join(",", item.Value)}");
55 |                 }
56 |                 File.WriteAllText("mozillazg_pinyin.txt", string.Join("\n", ls));
57 |             }
58 | 
59 | 
60 |         }
61 |         public static string DeUnicode(string str)
62 |         {
63 |             if (str.Length > 4) {
64 |                 var str1 = str.Substring(0, str.Length - 4);
65 |                 var str2 = str.Substring(str.Length - 4, 4);
66 |                 return DeUnicode(str1) + DeUnicode(str2);
67 |             }
68 |             return ((char)Convert.ToInt32(str, 16)).ToString();
69 |         }
70 | 
71 | 
72 | 
73 |     }
74 | }
75 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/BaseImport.cs:
--------------------------------------------------------------------------------
 1 | using Studyzy.IMEWLConverter.Entities;
 2 | 
 3 | namespace Studyzy.IMEWLConverter.IME
 4 | {
 5 |     public class BaseImport
 6 |     {
 7 |         public BaseImport()
 8 |         {
 9 |             DefaultRank = 0;
10 |             CodeType = CodeType.Pinyin;
11 |         }
12 |         /// <summary>
13 |         /// 输入法编码类型
14 |         /// </summary>
15 |         public virtual CodeType CodeType { get; protected set; }
16 |         /// <summary>
17 |         /// 默认词频,主要用于词频丢失的情况下生成词频
18 |         /// </summary>
19 |         public virtual int DefaultRank { get; set; }
20 |         /// <summary>
21 |         /// 词条总数
22 |         /// </summary>
23 |         public virtual int CountWord { get; set; }
24 |         /// <summary>
25 |         /// 当前处理了多少条
26 |         /// </summary>
27 |         public virtual int CurrentStatus { get; set; }
28 |         //public virtual Form ImportConfigForm { get; private set; }
29 |         /// <summary>
30 |         /// 该输入法词库是不是文本词库
31 |         /// </summary>
32 |         public virtual bool IsText
33 |         {
34 |             get { return true; }
35 |         }
36 |     }
37 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Entities/BuildType.cs:
--------------------------------------------------------------------------------
 1 | namespace Studyzy.IMEWLConverter.Entities
 2 | {
 3 |     public enum BuildType
 4 |     {
 5 |         /// <summary>
 6 |         ///     字符串左边包含分隔符
 7 |         /// </summary>
 8 |         LeftContain,
 9 | 
10 |         /// <summary>
11 |         ///     字符串右边包含分隔符
12 |         /// </summary>
13 |         RightContain,
14 | 
15 |         /// <summary>
16 |         ///     字符串两侧都不包含分隔符
17 |         /// </summary>
18 |         None,
19 | 
20 |         /// <summary>
21 |         ///     字符串两侧都有分隔符
22 |         /// </summary>
23 |         FullContain
24 |     }
25 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Entities/Code.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | using Studyzy.IMEWLConverter.Helpers;
 6 | 
 7 | namespace Studyzy.IMEWLConverter.Entities
 8 | {
 9 |    public class Code:List<IList<string>>
10 |     {
11 |         public Code(IEnumerable<IList<string>> code)
12 |         {
13 |             foreach (var c in code)
14 |             {
15 |                 this.Add(c);
16 |             }
17 |         }
18 |        /// <summary>
19 |        /// 
20 |        /// </summary>
21 |        /// <param name="code"></param>
22 |        /// <param name="is1Char1Code">是否是单拼音这样的一字一码,如果不是则表示为一词多码</param>
23 |         public Code(IList<string> code,bool is1Char1Code)
24 |         {
25 |             if (is1Char1Code)
26 |             {
27 |                 foreach (var py in code)
28 |                 {
29 |                     this.Add(new List<string> {py});
30 |                 }
31 |             }
32 |             else
33 |             {
34 |                 this.Add(code);
35 |             }
36 |         }
37 |        /// <summary>
38 |        /// 
39 |        /// </summary>
40 |        /// <param name="code">五笔这种一词一码类型</param>
41 |         public Code(string code)
42 |         {
43 |             this.Add(new List<string>(){code});
44 |         }
45 | 
46 |        public Code()
47 |        {
48 |            
49 |        }
50 |        /// <summary>
51 |        /// 取得每个字的编码的第一个编码
52 |        /// </summary>
53 |        /// <returns></returns>
54 |        public IList<string> GetDefaultCode()
55 |        {
56 |            var result = new List<string>();
57 |            foreach (var row in this)
58 |            {
59 |                result.Add(row[0]);
60 |            }
61 |            return result;
62 |        }
63 | 
64 |        public IList<string> ToCodeString(string codeSplit="", BuildType buildType=BuildType.None)
65 |        {
66 |           return CollectionHelper.CartesianProduct(this, codeSplit, buildType);
67 |        }
68 | 
69 |        /// <summary>
70 |        /// 取得第一行第一列编码
71 |        /// </summary>
72 |        /// <returns></returns>
73 |        public string GetTop1Code()
74 |        {
75 |            return this[0][0];
76 |        }
77 |     }
78 | }
79 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Entities/CodeType.cs:
--------------------------------------------------------------------------------
 1 | namespace Studyzy.IMEWLConverter.Entities
 2 | {
 3 |     public enum CodeType
 4 |     {
 5 |         /// <summary>
 6 |         ///     用户自定义短语
 7 |         /// </summary>
 8 |         UserDefinePhrase,
 9 | 
10 |         /// <summary>
11 |         ///     五笔86
12 |         /// </summary>
13 |         Wubi,
14 |         Wubi98,
15 | 
16 |         /// <summary>
17 |         ///     郑码
18 |         /// </summary>
19 |         Zhengma,
20 | 
21 |         /// <summary>
22 |         ///     仓颉
23 |         /// </summary>
24 |         Cangjie,
25 | 
26 |         /// <summary>
27 |         ///     未知
28 |         /// </summary>
29 |         Unknown,
30 | 
31 |         /// <summary>
32 |         ///     用户自定义
33 |         /// </summary>
34 |         UserDefine,
35 | 
36 |         /// <summary>
37 |         ///     拼音
38 |         /// </summary>
39 |         Pinyin,
40 | 
41 |         /// <summary>
42 |         ///     永码
43 |         /// </summary>
44 |         Yong,
45 | 
46 |         /// <summary>
47 |         ///     青松二笔
48 |         /// </summary>
49 |         QingsongErbi,
50 | 
51 |         /// <summary>
52 |         ///     超强二笔30键
53 |         /// </summary>
54 |         ChaoqiangErbi,
55 | 
56 |         /// <summary>
57 |         ///     超强音形(二笔)
58 |         /// </summary>
59 |         ChaoqingYinxin,
60 | 
61 |         /// <summary>
62 |         ///     英语
63 |         /// </summary>
64 |         English,
65 | 
66 |         /// <summary>
67 |         ///     内码
68 |         /// </summary>
69 |         InnerCode,
70 | 
71 |         /// <summary>
72 |         ///     现代二笔
73 |         /// </summary>
74 |         XiandaiErbi,
75 | 
76 |         /// <summary>
77 |         ///     注音
78 |         /// </summary>
79 |         Zhuyin,
80 | 
81 |         /// <summary>
82 |         ///     地球拼音
83 |         /// </summary>
84 |         TerraPinyin,
85 |         /// <summary>
86 |         /// 超音速写
87 |         /// </summary>
88 |         Chaoyin,
89 |         /// <summary>
90 |         ///     无编码
91 |         /// </summary>
92 |         NoCode
93 | 
94 |     }
95 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Entities/WordLibraryList.cs:
--------------------------------------------------------------------------------
 1 | using System.Collections.Generic;
 2 | 
 3 | namespace Studyzy.IMEWLConverter.Entities
 4 | {
 5 |     /// <summary>
 6 |     ///     词库类,含有多个词条
 7 |     /// </summary>
 8 |     public class WordLibraryList : List<WordLibrary>
 9 |     {
10 |         /// <summary>
11 |         ///     将词库中重复出现的单词合并成一个词,多词库合并时使用(词重复就算)
12 |         /// </summary>
13 |         public void MergeSameWord()
14 |         {
15 |             var dic = new Dictionary<string, WordLibrary>();
16 |             foreach (WordLibrary wl in this)
17 |             {
18 |                 if (!dic.ContainsKey(wl.Word))
19 |                 {
20 |                     dic.Add(wl.Word, wl);
21 |                 }
22 |             }
23 |             Clear();
24 |             foreach (WordLibrary wl in dic.Values)
25 |             {
26 |                 Add(wl);
27 |             }
28 |         }
29 | 
30 |         public void AddWordLibraryList(WordLibraryList wll)
31 |         {
32 |             if (wll != null)
33 |             {
34 |                 AddRange(wll);
35 |             }
36 |         }
37 |     }
38 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Helpers/BinFileHelper.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.IO;
 3 | 
 4 | namespace Studyzy.IMEWLConverter.Helpers
 5 | {
 6 |     internal static class BinFileHelper
 7 |     {
 8 |         public static short ReadInt16(Stream fs)
 9 |         {
10 |             var temp = new byte[2];
11 |             fs.Read(temp, 0, 2);
12 |             short s = BitConverter.ToInt16(temp, 0);
13 |             return s;
14 |         }
15 | 
16 |         public static int ReadInt32(Stream fs)
17 |         {
18 |             var temp = new byte[4];
19 |             fs.Read(temp, 0, 4);
20 |             int s = BitConverter.ToInt32(temp, 0);
21 |             return s;
22 |         }
23 | 
24 |         public static long ReadInt64(Stream fs)
25 |         {
26 |             var temp = new byte[8];
27 |             fs.Read(temp, 0, 8);
28 |             long s = BitConverter.ToInt64(temp, 0);
29 |             return s;
30 |         }
31 | 
32 |         public static byte[] ReadArray(Stream fs, int count)
33 |         {
34 |             var bytes = new byte[count];
35 |             fs.Read(bytes, 0, count);
36 |             return bytes;
37 |         }
38 | 
39 |         public static byte[] ReadArray(byte[] fs, int position, int count)
40 |         {
41 |             var bytes = new byte[count];
42 |             for (int i = 0; i < count; i++) {
43 |                 bytes[i] = fs[position + i];
44 |             }
45 | 
46 |             return bytes;
47 |         }
48 |     }
49 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Helpers/DictionaryHelper.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | 
 4 | namespace Studyzy.IMEWLConverter.Helpers
 5 | {
 6 |     public class DictionaryHelper
 7 |     {
 8 |         private static readonly Dictionary<char, ChineseCode> dictionary = new Dictionary<char, ChineseCode>();
 9 | 
10 |         private static Dictionary<char, ChineseCode> Dict
11 |         {
12 |             get
13 |             {
14 |                 if (dictionary.Count == 0) {
15 |                     string allPinyin = "";// Dictionaries.ChineseCode;
16 |                     string[] pyList = allPinyin.Split(new[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
17 |                     for (int i = 0; i < pyList.Length; i++) {
18 |                         string[] hzpy = pyList[i].Split('\t');
19 |                         char hz = Convert.ToChar(hzpy[1]);
20 | 
21 |                         dictionary.Add(hz, new ChineseCode {
22 |                             Code = hzpy[0],
23 |                             Word = hzpy[1][0],
24 |                             Wubi86 = hzpy[2],
25 |                             Wubi98 = (hzpy[3] == "" ? hzpy[2] : hzpy[3]),
26 |                             Pinyins = hzpy[4],
27 |                             Freq = Convert.ToDouble(hzpy[5])
28 |                         });
29 |                     }
30 |                 }
31 |                 return dictionary;
32 |             }
33 |         }
34 | 
35 |         public static ChineseCode GetCode(char c)
36 |         {
37 |             return Dict[c];
38 |         }
39 | 
40 | 
41 |         public static List<ChineseCode> GetAll()
42 |         {
43 |             return new List<ChineseCode>(Dict.Values);
44 |         }
45 |     }
46 | 
47 |     public struct ChineseCode
48 |     {
49 |         public string Code { get; set; }
50 |         public char Word { get; set; }
51 |         public string Wubi86 { get; set; }
52 |         public string Wubi98 { get; set; }
53 |         public string Pinyins { get; set; }
54 |         public double Freq { get; set; }
55 |     }
56 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/ScelImport/Interface.cs:
--------------------------------------------------------------------------------
 1 | using System.Text;
 2 | using Studyzy.IMEWLConverter.Entities;
 3 | 
 4 | namespace Studyzy.IMEWLConverter
 5 | {
 6 |     public interface IWordLibraryImport
 7 |     {
 8 |         int CountWord { get; set; }
 9 |         int CurrentStatus { get; set; }
10 |         bool IsText { get; }
11 |         CodeType CodeType { get; }
12 |         //int DefaultRank { get; set; }
13 |         WordLibraryList Import(string path);
14 |         WordLibraryList ImportLine(string str);
15 |         //Form ImportConfigForm { get; }
16 |     }
17 | 
18 |     public interface IWordLibraryTextImport : IWordLibraryImport
19 |     {
20 |         Encoding Encoding { get; }
21 |         WordLibraryList ImportText(string text);
22 |     }
23 | 
24 |     public interface IWordLibraryExport
25 |     {
26 |         Encoding Encoding { get; }
27 |         CodeType CodeType { get; }
28 |         string Export(WordLibraryList wlList);
29 |         string ExportLine(WordLibrary wl);
30 |         //Form ExportConfigForm { get; }
31 |     }
32 | 
33 |     public interface IMultiCodeType
34 |     {
35 |         CodeType CodeType { get; }
36 |     }
37 | 
38 |     public interface IStreamPrepare
39 |     {
40 |         void Prepare();
41 |     }
42 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/TextLine.cs:
--------------------------------------------------------------------------------
 1 | using System.Collections.Generic;
 2 | 
 3 | namespace ToolGood.Pinyin.Pretreatment
 4 | {
 5 |     partial class Program
 6 |     {
 7 |         public class TextLine
 8 |         {
 9 |             public int Start { get; set; }
10 |             public int End { get; set; }
11 |             public string Keyword { get; set; }
12 | 
13 |             public List<string> Pinyin { get; set; }
14 | 
15 |             public TextNode Next { get; set; }
16 | 
17 |         }
18 | 
19 |     }
20 | }
21 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/TextNode.cs:
--------------------------------------------------------------------------------
 1 | using System.Collections.Generic;
 2 | 
 3 | namespace ToolGood.Pinyin.Pretreatment
 4 | {
 5 |     partial class Program
 6 |     {
 7 |         public class TextNode
 8 |         {
 9 |             public bool IsEnd { get; set; }
10 |             public List<TextLine> Children { get; set; }
11 | 
12 |             public TextNode()
13 |             {
14 |                 Children = new List<TextLine>();
15 |             }
16 | 
17 |             public List<string> GetFullTextLine()
18 |             {
19 |                 List<string> textLines = new List<string>();
20 |                 GetFullTextLine(textLines, "");
21 |                 return textLines;
22 |             }
23 |             public void GetFullTextLine(List<string> textLines,string pre)
24 |             {
25 |                 if (this.IsEnd) {
26 |                     textLines.Add(pre);
27 |                     return;
28 |                 }
29 |                 foreach (var child in Children) {
30 |                     var p = pre + "," + child.Keyword;
31 |                     child.Next.GetFullTextLine(textLines, p);
32 |                 }
33 |             }
34 | 
35 | 
36 | 
37 | 
38 |         }
39 | 
40 |     }
41 | }
42 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/pinyin-data/kMandarin_overwrite.txt:
--------------------------------------------------------------------------------
 1 | U+389C: kāng  # 㢜
 2 | U+60B7: lì  # 悷
 3 | U+417F: huá  # 䅿
 4 | U+46BE: rén  # 䚾
 5 | U+4B78: fù  # 䭸
 6 | U+4B7B: fēn  # 䭻
 7 | U+4CC9: dōng  # 䳉
 8 | U+4D7B: huì  # 䵻
 9 | U+57D4: pǔ  # 埔
10 | U+5A47: cǎi  # 婇
11 | U+5F6F: piāo  # 彯
12 | U+5F77: páng  # 彷
13 | U+60B7: lì  # 悷
14 | U+65FD: tūn  # 旽
15 | U+6A0B: tōng  # 樋
16 | U+6ADA: lǘ  # 櫚
17 | U+6E5E: zhēn  # 湞
18 | U+73D6: guāng  # 珖
19 | U+77A1: guī  # 瞡
20 | U+7BC9: zhù  # 築
21 | U+815C: méi  # 腜
22 | U+816C: róu  # 腬
23 | U+8192: ōu  # 膒
24 | U+8491: yīn  # 蒑
25 | U+8A09: fàn  # 訉
26 | U+90D8: lǚ  # 郘
27 | U+9D24: zhōng  # 鴤
28 | U+2031A: nòng  # 𠌚
29 | U+2141D: fú  # 𡐝
30 | U+21594: nuó  # 𡖔
31 | U+2199D: xiāo  # 𡦝
32 | U+21B0D: mí  # 𡬍
33 | U+21B10: yí  # 𡬐
34 | U+21B15: lóng  # 𡬕
35 | U+2243F: rǎng  # 𢐿
36 | U+2273D: kuí  # 𢜽
37 | U+22741: hōng  # 𢝁
38 | U+22892: sū  # 𢢒
39 | U+22A10: jí  # 𢨐
40 | U+245ED: xià  # 𤗭
41 | U+24704: huái  # 𤜄
42 | U+247AE: zhài  # 𤞮
43 | U+24856: yán  # 𤡖
44 | U+248B5: lài  # 𤢵
45 | U+249EB: jīn  # 𤧫
46 | U+2546B: kān  # 𥑫
47 | U+2588D: hù  # 𥢍
48 | U+2588F: diàn  # 𥢏
49 | U+25C1F: yuán  # 𥰟
50 | U+272D5: kùn  # 𧋕
51 | U+2757A: shuāng  # 𧕺
52 | U+275C8: nú  # 𧗈
53 | U+27956: lí  # 𧥖
54 | U+280A2: jí  # 𨂢
55 | U+2824B: tuō  # 𨉋
56 | U+284A8: hài  # 𨒨
57 | U+28ABF: liú  # 𨪿
58 | U+28DED: chán  # 𨷭
59 | U+28E30: jú  # 𨸰
60 | U+293CF: wéi  # 𩏏
61 | U+295F5: zhēng  # 𩗵
62 | U+29B5D: wǒ  # 𩭝
63 | U+2A048: zhuāng  # 𪁈
64 | U+2A2A2: shí  # 𪊢
65 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/pinyin-data/kanji.txt:
--------------------------------------------------------------------------------
 1 | U+5302: xiōng  # 匂 
 2 | U+4E3C: jǐng  # 丼  
 3 | U+8FBB: shí  # 辻
 4 | U+8FBC: rù  # 込
 5 | U+51E7: jīn  # 凧
 6 | U+6763: shān  # 杣
 7 | U+67A0: zá  # 枠
 8 | U+7551: tián  # 畑
 9 | U+6803: lì  # 栃
10 | U+6802: méi  # 栂
11 | U+5CE0: kǎ  # 峠
12 | U+4FE3: yǔ  # 俣
13 | U+7C7E: rèn  # 籾
14 | U+7560: tián  # 畠
15 | U+96EB: xià  # 雫
16 | U+7B39: shì  # 笹
17 | U+5840: píng  # 塀
18 | U+6919: chāng  # 椙
19 | U+7872: yù  # 硲
20 | U+86EF: lǎo  # 蛯
21 | U+55B0: cān  # 喰
22 | U+643E: zhà  # 搾
23 | U+698A: shén  # 榊
24 | U+50CD: dòng  # 働
25 | U+7CC0: huā  # 糀
26 | U+9786: bǐng  # 鞆
27 | U+69C7: zhēn  # 槇
28 | U+6A2B: jiān  # 樫
29 | U+9D2B: tián  # 鴫
30 | U+567A: xīn  # 噺
31 | U+7C17: liáng  # 簗
32 | U+9EBF: mó  # 麿
33 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/pinyin-data/nonCJKUI.txt:
--------------------------------------------------------------------------------
1 | U+3007: líng,yuán,xīng  # 〇
2 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.PinYin.Pretreatment/pinyin-data/overwrite.txt:
--------------------------------------------------------------------------------
 1 | # 手工纠正错误的拼音数据
 2 | # 井号开头的行将会被忽略,可以用作注释
 3 | # 数据格式:{code point}: {pinyins}  # {hanzi}
 4 | # 示例:
 5 | # U+4E2D: zhōng,zhòng  # 中
 6 | U+5353: zhuó,zhuō  # 卓
 7 | U+5565: shá,shà  # 啥
 8 | U+5666: yuě,huì  # 噦
 9 | U+59B3: nǐ,nǎi  # 妳
10 | U+7F57: luó  # 罗
11 | U+8BB8: xǔ,hǔ  # 许
12 | U+94AD: tǒu,dǒu  # 钭
13 | U+9E00: chǔ,zhú,chù  # 鸀
14 | U+E815: yè  # 
15 | U+E816: zuǒ,yǒu  # 
16 | U+E81B: zhòu,zhū  # 
17 | U+E81D: jié,jiē  # 
18 | U+E824: zhòu  # 
19 | U+E826: shǒu  # 
20 | U+E82B: fēng  # 
21 | U+E82C: gòng  # 
22 | U+E82E: huì,kuì  # 
23 | U+E830: jiān  # 
24 | U+E831: ēn  # 
25 | U+E832: xiǎo  # 
26 | U+E834: lóu,lǘ  # 
27 | U+E835: cǎn,shān,cēn  # 
28 | U+E836: zhú  # 
29 | U+E838: wǎng  # 
30 | U+E83A: yáng,xiáng  # 
31 | U+E83D: bà,bēi  # 
32 | U+E83F: zhuān,zhuán,chuǎn,chún  # 
33 | U+E842: kuì,huì  # 
34 | U+E843: juǎn  # 
35 | U+E846: qíng  # 
36 | U+E84A: yé,yá  # 
37 | U+E850: chuài  # 
38 | U+E854: zhuó  # 
39 | U+E864: luán  # 
40 | U+241FE: yíng  # 𤇾
41 | U+275C8: nú  # 𧗈
42 | U+47C1: xiāo,chāo  # 䟁
43 | U+9EBF: mí  # 麿
44 | U+7C17: zhù  # 簗
45 | U+8279: cǎo  # 艹
46 | U+88CF: lǐ  # 裏
47 | U+88E1: lǐ  # 裡
48 | U+5206: fēn,fèn,fén  # 分
49 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/BaseImport.cs:
--------------------------------------------------------------------------------
 1 | using Studyzy.IMEWLConverter.Entities;
 2 | 
 3 | namespace Studyzy.IMEWLConverter.IME
 4 | {
 5 |     public class BaseImport
 6 |     {
 7 |         public BaseImport()
 8 |         {
 9 |             DefaultRank = 0;
10 |             CodeType = CodeType.Pinyin;
11 |         }
12 |         /// <summary>
13 |         /// 输入法编码类型
14 |         /// </summary>
15 |         public virtual CodeType CodeType { get; protected set; }
16 |         /// <summary>
17 |         /// 默认词频,主要用于词频丢失的情况下生成词频
18 |         /// </summary>
19 |         public virtual int DefaultRank { get; set; }
20 |         /// <summary>
21 |         /// 词条总数
22 |         /// </summary>
23 |         public virtual int CountWord { get; set; }
24 |         /// <summary>
25 |         /// 当前处理了多少条
26 |         /// </summary>
27 |         public virtual int CurrentStatus { get; set; }
28 |         //public virtual Form ImportConfigForm { get; private set; }
29 |         /// <summary>
30 |         /// 该输入法词库是不是文本词库
31 |         /// </summary>
32 |         public virtual bool IsText
33 |         {
34 |             get { return true; }
35 |         }
36 |     }
37 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Entities/BuildType.cs:
--------------------------------------------------------------------------------
 1 | namespace Studyzy.IMEWLConverter.Entities
 2 | {
 3 |     public enum BuildType
 4 |     {
 5 |         /// <summary>
 6 |         ///     字符串左边包含分隔符
 7 |         /// </summary>
 8 |         LeftContain,
 9 | 
10 |         /// <summary>
11 |         ///     字符串右边包含分隔符
12 |         /// </summary>
13 |         RightContain,
14 | 
15 |         /// <summary>
16 |         ///     字符串两侧都不包含分隔符
17 |         /// </summary>
18 |         None,
19 | 
20 |         /// <summary>
21 |         ///     字符串两侧都有分隔符
22 |         /// </summary>
23 |         FullContain
24 |     }
25 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Entities/Code.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | using Studyzy.IMEWLConverter.Helpers;
 6 | 
 7 | namespace Studyzy.IMEWLConverter.Entities
 8 | {
 9 |    public class Code:List<IList<string>>
10 |     {
11 |         public Code(IEnumerable<IList<string>> code)
12 |         {
13 |             foreach (var c in code)
14 |             {
15 |                 this.Add(c);
16 |             }
17 |         }
18 |        /// <summary>
19 |        /// 
20 |        /// </summary>
21 |        /// <param name="code"></param>
22 |        /// <param name="is1Char1Code">是否是单拼音这样的一字一码,如果不是则表示为一词多码</param>
23 |         public Code(IList<string> code,bool is1Char1Code)
24 |         {
25 |             if (is1Char1Code)
26 |             {
27 |                 foreach (var py in code)
28 |                 {
29 |                     this.Add(new List<string> {py});
30 |                 }
31 |             }
32 |             else
33 |             {
34 |                 this.Add(code);
35 |             }
36 |         }
37 |        /// <summary>
38 |        /// 
39 |        /// </summary>
40 |        /// <param name="code">五笔这种一词一码类型</param>
41 |         public Code(string code)
42 |         {
43 |             this.Add(new List<string>(){code});
44 |         }
45 | 
46 |        public Code()
47 |        {
48 |            
49 |        }
50 |        /// <summary>
51 |        /// 取得每个字的编码的第一个编码
52 |        /// </summary>
53 |        /// <returns></returns>
54 |        public IList<string> GetDefaultCode()
55 |        {
56 |            var result = new List<string>();
57 |            foreach (var row in this)
58 |            {
59 |                result.Add(row[0]);
60 |            }
61 |            return result;
62 |        }
63 | 
64 |        public IList<string> ToCodeString(string codeSplit="", BuildType buildType=BuildType.None)
65 |        {
66 |           return CollectionHelper.CartesianProduct(this, codeSplit, buildType);
67 |        }
68 | 
69 |        /// <summary>
70 |        /// 取得第一行第一列编码
71 |        /// </summary>
72 |        /// <returns></returns>
73 |        public string GetTop1Code()
74 |        {
75 |            return this[0][0];
76 |        }
77 |     }
78 | }
79 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Entities/CodeType.cs:
--------------------------------------------------------------------------------
 1 | namespace Studyzy.IMEWLConverter.Entities
 2 | {
 3 |     public enum CodeType
 4 |     {
 5 |         /// <summary>
 6 |         ///     用户自定义短语
 7 |         /// </summary>
 8 |         UserDefinePhrase,
 9 | 
10 |         /// <summary>
11 |         ///     五笔86
12 |         /// </summary>
13 |         Wubi,
14 |         Wubi98,
15 | 
16 |         /// <summary>
17 |         ///     郑码
18 |         /// </summary>
19 |         Zhengma,
20 | 
21 |         /// <summary>
22 |         ///     仓颉
23 |         /// </summary>
24 |         Cangjie,
25 | 
26 |         /// <summary>
27 |         ///     未知
28 |         /// </summary>
29 |         Unknown,
30 | 
31 |         /// <summary>
32 |         ///     用户自定义
33 |         /// </summary>
34 |         UserDefine,
35 | 
36 |         /// <summary>
37 |         ///     拼音
38 |         /// </summary>
39 |         Pinyin,
40 | 
41 |         /// <summary>
42 |         ///     永码
43 |         /// </summary>
44 |         Yong,
45 | 
46 |         /// <summary>
47 |         ///     青松二笔
48 |         /// </summary>
49 |         QingsongErbi,
50 | 
51 |         /// <summary>
52 |         ///     超强二笔30键
53 |         /// </summary>
54 |         ChaoqiangErbi,
55 | 
56 |         /// <summary>
57 |         ///     超强音形(二笔)
58 |         /// </summary>
59 |         ChaoqingYinxin,
60 | 
61 |         /// <summary>
62 |         ///     英语
63 |         /// </summary>
64 |         English,
65 | 
66 |         /// <summary>
67 |         ///     内码
68 |         /// </summary>
69 |         InnerCode,
70 | 
71 |         /// <summary>
72 |         ///     现代二笔
73 |         /// </summary>
74 |         XiandaiErbi,
75 | 
76 |         /// <summary>
77 |         ///     注音
78 |         /// </summary>
79 |         Zhuyin,
80 | 
81 |         /// <summary>
82 |         ///     地球拼音
83 |         /// </summary>
84 |         TerraPinyin,
85 |         /// <summary>
86 |         /// 超音速写
87 |         /// </summary>
88 |         Chaoyin,
89 |         /// <summary>
90 |         ///     无编码
91 |         /// </summary>
92 |         NoCode
93 | 
94 |     }
95 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Entities/WordLibraryList.cs:
--------------------------------------------------------------------------------
 1 | using System.Collections.Generic;
 2 | 
 3 | namespace Studyzy.IMEWLConverter.Entities
 4 | {
 5 |     /// <summary>
 6 |     ///     词库类,含有多个词条
 7 |     /// </summary>
 8 |     public class WordLibraryList : List<WordLibrary>
 9 |     {
10 |         /// <summary>
11 |         ///     将词库中重复出现的单词合并成一个词,多词库合并时使用(词重复就算)
12 |         /// </summary>
13 |         public void MergeSameWord()
14 |         {
15 |             var dic = new Dictionary<string, WordLibrary>();
16 |             foreach (WordLibrary wl in this)
17 |             {
18 |                 if (!dic.ContainsKey(wl.Word))
19 |                 {
20 |                     dic.Add(wl.Word, wl);
21 |                 }
22 |             }
23 |             Clear();
24 |             foreach (WordLibrary wl in dic.Values)
25 |             {
26 |                 Add(wl);
27 |             }
28 |         }
29 | 
30 |         public void AddWordLibraryList(WordLibraryList wll)
31 |         {
32 |             if (wll != null)
33 |             {
34 |                 AddRange(wll);
35 |             }
36 |         }
37 |     }
38 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Helpers/BinFileHelper.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.IO;
 3 | 
 4 | namespace Studyzy.IMEWLConverter.Helpers
 5 | {
 6 |     internal static class BinFileHelper
 7 |     {
 8 |         public static short ReadInt16(Stream fs)
 9 |         {
10 |             var temp = new byte[2];
11 |             fs.Read(temp, 0, 2);
12 |             short s = BitConverter.ToInt16(temp, 0);
13 |             return s;
14 |         }
15 | 
16 |         public static int ReadInt32(Stream fs)
17 |         {
18 |             var temp = new byte[4];
19 |             fs.Read(temp, 0, 4);
20 |             int s = BitConverter.ToInt32(temp, 0);
21 |             return s;
22 |         }
23 | 
24 |         public static long ReadInt64(Stream fs)
25 |         {
26 |             var temp = new byte[8];
27 |             fs.Read(temp, 0, 8);
28 |             long s = BitConverter.ToInt64(temp, 0);
29 |             return s;
30 |         }
31 | 
32 |         public static byte[] ReadArray(Stream fs, int count)
33 |         {
34 |             var bytes = new byte[count];
35 |             fs.Read(bytes, 0, count);
36 |             return bytes;
37 |         }
38 | 
39 |         public static byte[] ReadArray(byte[] fs, int position, int count)
40 |         {
41 |             var bytes = new byte[count];
42 |             for (int i = 0; i < count; i++) {
43 |                 bytes[i] = fs[position + i];
44 |             }
45 | 
46 |             return bytes;
47 |         }
48 |     }
49 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Helpers/DictionaryHelper.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | 
 4 | namespace Studyzy.IMEWLConverter.Helpers
 5 | {
 6 |     public class DictionaryHelper
 7 |     {
 8 |         private static readonly Dictionary<char, ChineseCode> dictionary = new Dictionary<char, ChineseCode>();
 9 | 
10 |         private static Dictionary<char, ChineseCode> Dict
11 |         {
12 |             get
13 |             {
14 |                 if (dictionary.Count == 0) {
15 |                     string allPinyin = "";// Dictionaries.ChineseCode;
16 |                     string[] pyList = allPinyin.Split(new[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
17 |                     for (int i = 0; i < pyList.Length; i++) {
18 |                         string[] hzpy = pyList[i].Split('\t');
19 |                         char hz = Convert.ToChar(hzpy[1]);
20 | 
21 |                         dictionary.Add(hz, new ChineseCode {
22 |                             Code = hzpy[0],
23 |                             Word = hzpy[1][0],
24 |                             Wubi86 = hzpy[2],
25 |                             Wubi98 = (hzpy[3] == "" ? hzpy[2] : hzpy[3]),
26 |                             Pinyins = hzpy[4],
27 |                             Freq = Convert.ToDouble(hzpy[5])
28 |                         });
29 |                     }
30 |                 }
31 |                 return dictionary;
32 |             }
33 |         }
34 | 
35 |         public static ChineseCode GetCode(char c)
36 |         {
37 |             return Dict[c];
38 |         }
39 | 
40 | 
41 |         public static List<ChineseCode> GetAll()
42 |         {
43 |             return new List<ChineseCode>(Dict.Values);
44 |         }
45 |     }
46 | 
47 |     public struct ChineseCode
48 |     {
49 |         public string Code { get; set; }
50 |         public char Word { get; set; }
51 |         public string Wubi86 { get; set; }
52 |         public string Wubi98 { get; set; }
53 |         public string Pinyins { get; set; }
54 |         public double Freq { get; set; }
55 |     }
56 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/ScelImport/Interface.cs:
--------------------------------------------------------------------------------
 1 | using System.Text;
 2 | using Studyzy.IMEWLConverter.Entities;
 3 | 
 4 | namespace Studyzy.IMEWLConverter
 5 | {
 6 |     public interface IWordLibraryImport
 7 |     {
 8 |         int CountWord { get; set; }
 9 |         int CurrentStatus { get; set; }
10 |         bool IsText { get; }
11 |         CodeType CodeType { get; }
12 |         //int DefaultRank { get; set; }
13 |         WordLibraryList Import(string path);
14 |         WordLibraryList ImportLine(string str);
15 |         //Form ImportConfigForm { get; }
16 |     }
17 | 
18 |     public interface IWordLibraryTextImport : IWordLibraryImport
19 |     {
20 |         Encoding Encoding { get; }
21 |         WordLibraryList ImportText(string text);
22 |     }
23 | 
24 |     public interface IWordLibraryExport
25 |     {
26 |         Encoding Encoding { get; }
27 |         CodeType CodeType { get; }
28 |         string Export(WordLibraryList wlList);
29 |         string ExportLine(WordLibrary wl);
30 |         //Form ExportConfigForm { get; }
31 |     }
32 | 
33 |     public interface IMultiCodeType
34 |     {
35 |         CodeType CodeType { get; }
36 |     }
37 | 
38 |     public interface IStreamPrepare
39 |     {
40 |         void Prepare();
41 |     }
42 | }


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/HKVariants.txt:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 兌	兑
 3 | 叄	叁
 4 | 只	只 衹
 5 | 啓	啓 啟
 6 | 喫	吃
 7 | 囪	囱
 8 | 妝	妝 粧
 9 | 媼	媪
10 | 嬀	媯
11 | 悅	悦
12 | 慍	愠
13 | 戶	户
14 | 挩	捝
15 | 搵	揾
16 | 擡	抬
17 | 敓	敚
18 | 敘	敍 敘
19 | 柺	枴
20 | 梲	棁
21 | 棱	稜 棱
22 | 榲	榅
23 | 檯	枱
24 | 氳	氲
25 | 涗	涚
26 | 溫	温
27 | 溼	濕
28 | 潙	溈
29 | 潨	潀
30 | 熅	煴
31 | 爲	為
32 | 癡	痴
33 | 皁	皂
34 | 祕	秘
35 | 稅	税
36 | 竈	灶
37 | 糉	粽 糉 糭
38 | 縕	緼
39 | 纔	才
40 | 脣	唇
41 | 脫	脱
42 | 膃	腽
43 | 臥	卧
44 | 臺	台
45 | 菸	煙
46 | 蒕	蒀
47 | 蔥	葱
48 | 蔿	蒍
49 | 蘊	藴
50 | 蛻	蜕
51 | 衆	眾
52 | 衛	衞
53 | 覈	核
54 | 說	説
55 | 踊	踴
56 | 轀	輼
57 | 醞	醖
58 | 鉢	缽
59 | 鉤	鈎
60 | 銳	鋭
61 | 鍼	針
62 | 閱	閲
63 | 鰮	鰛
64 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/HKVariantsPhrases.txt:
--------------------------------------------------------------------------------
 1 | 南涌	南涌
 2 | 大欖涌	大欖涌
 3 | 大涌	大涌
 4 | 東涌	東涌
 5 | 沙河涌	沙河涌
 6 | 沙魚涌	沙魚涌
 7 | 河涌	河涌
 8 | 泥涌	泥涌
 9 | 涌尾	涌尾
10 | 深涌	深涌
11 | 溪涌	溪涌
12 | 葵涌	葵涌
13 | 蠔涌	蠔涌
14 | 西涌	西涌
15 | 鰂魚涌	鰂魚涌
16 | 麻涌	麻涌
17 | 黎涌	黎涌
18 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/HKVariantsRevPhrases.txt:
--------------------------------------------------------------------------------
  1 | 一口吃個	一口喫個
  2 | 一口吃成	一口喫成
  3 | 一家三口	一家三口
  4 | 一家五口	一家五口
  5 | 一家六口	一家六口
  6 | 一家四口	一家四口
  7 | 七星巖	七星巖
  8 | 世胄	世胄
  9 | 介胄	介冑
 10 | 傅巖	傅巖
 11 | 免胄	免冑
 12 | 冠胄	冠冑
 13 | 千巖競秀	千巖競秀
 14 | 千巖萬壑	千巖萬壑
 15 | 千巖萬谷	千巖萬谷
 16 | 口吃	口吃
 17 | 台山	台山
 18 | 台州	台州
 19 | 台州地區	台州地區
 20 | 台州市	台州市
 21 | 吃口	喫口 吃口
 22 | 吃口令	吃口令
 23 | 吃口飯	喫口飯
 24 | 吃吃	喫喫 吃吃
 25 | 吃子	喫子 吃子
 26 | 名胄	名胄
 27 | 國胄	國胄
 28 | 圍巖	圍巖
 29 | 地胄	地胄
 30 | 壓胄子	壓冑子
 31 | 士胄	士胄
 32 | 大巖桐	大巖桐
 33 | 天台女	天台女
 34 | 天台宗	天台宗
 35 | 天台山	天台山
 36 | 天台縣	天台縣
 37 | 天潢貴胄	天潢貴胄
 38 | 奇巖	奇巖
 39 | 寶胄	寶胄
 40 | 小巖洞	小巖洞
 41 | 岫巖縣	岫巖縣
 42 | 峯巖	峯巖
 43 | 嵌巖	嵌巖
 44 | 巉巖	巉巖
 45 | 巖壁	巖壁
 46 | 巖居	巖居
 47 | 巖居穴處	巖居穴處
 48 | 巖居谷飲	巖居谷飲
 49 | 巖岸	巖岸
 50 | 巖巉	巖巉
 51 | 巖巖	巖巖
 52 | 巖徼	巖徼
 53 | 巖手縣	巖手縣
 54 | 巖村	巖村
 55 | 巖洞	巖洞
 56 | 巖流圈	巖流圈
 57 | 巖牆	巖牆
 58 | 巖牆之下	巖牆之下
 59 | 巖畫	巖畫
 60 | 巖穴	巖穴
 61 | 巖穴之士	巖穴之士
 62 | 巖薔薇	巖薔薇
 63 | 巖邑	巖邑
 64 | 巖郎	巖郎
 65 | 巖阻	巖阻
 66 | 巖陛	巖陛
 67 | 帝胄	帝胄
 68 | 幽巖	幽巖
 69 | 幽棲巖谷	幽棲巖谷
 70 | 張口	張口
 71 | 懸巖	懸巖
 72 | 懸巖峭壁	懸巖峭壁
 73 | 懸胄	懸冑
 74 | 攀巖	攀巖
 75 | 支胄	支胄
 76 | 教胄	教胄
 77 | 景胄	景胄
 78 | 望胄	望胄
 79 | 末胄	末胄
 80 | 村胄	村胄
 81 | 枕巖漱流	枕巖漱流
 82 | 枝胄	枝胄
 83 | 氏胄	氏胄
 84 | 洪胄	洪胄
 85 | 浙江天台縣	浙江天台縣
 86 | 清胄	清胄
 87 | 灰巖殘丘	灰巖殘丘
 88 | 玄胄	玄胄
 89 | 甲胄	甲冑
 90 | 甲胄魚類	甲冑魚類
 91 | 皇胄	皇胄
 92 | 石灰巖洞	石灰巖洞
 93 | 神胄	神胄
 94 | 簪纓世胄	簪纓世胄
 95 | 系胄	系胄
 96 | 紅巖	紅巖
 97 | 絕巖	絕巖
 98 | 緒胄	緒胄
 99 | 纂胄	纂胄
100 | 胃口	胃口
101 | 胄嗣	胄嗣
102 | 胄子	胄子
103 | 胄序	胄序
104 | 胄族	胄族
105 | 胄甲	冑甲
106 | 胄監	胄監
107 | 胄科	冑科
108 | 胄緒	胄緒
109 | 胄胤	胄胤
110 | 胄裔	胄裔
111 | 胄裔繁衍	胄裔繁衍
112 | 胄閥	胄閥
113 | 胡雪巖	胡雪巖
114 | 胤胄	胤胄
115 | 苗胄	苗胄
116 | 英胄	英胄
117 | 華胄	華胄
118 | 血胄	血胄
119 | 裔胄	裔胄
120 | 訓胄	訓胄
121 | 試胄	試胄
122 | 豪門貴胄	豪門貴胄
123 | 貝胄	貝冑
124 | 貴胄	貴胄
125 | 賢胄	賢胄
126 | 蹇吃	蹇吃
127 | 躬擐甲胄	躬擐甲冑
128 | 遐胄	遐胄
129 | 遙胄	遙胄
130 | 遙遙華胄	遙遙華胄
131 | 遠胄	遠胄
132 | 遺胄	遺胄
133 | 鄧艾吃	鄧艾吃
134 | 重巖疊嶂	重巖疊嶂
135 | 金胄	金胄
136 | 鎧胄	鎧冑
137 | 鑿巖	鑿巖
138 | 門胄	門胄
139 | 開口	開口
140 | 雲巖區	雲巖區
141 | 非層巖	非層巖
142 | 韓侂胄	韓侂冑
143 | 飮胄	飮冑
144 | 骨巖巖	骨巖巖
145 | 高胄	高胄
146 | 魚胄	魚冑
147 | 鮮胄	鮮胄
148 | 鴻胄	鴻胄
149 | 黃巖區	黃巖區
150 | 黃巖島	黃巖島
151 | 黃炎貴胄	黃炎貴胄
152 | 齒胄	齒胄
153 | 龍巖	龍巖
154 | 龍巖市	龍巖市
155 | 龍巖村	龍巖村
156 | 龍胄	龍胄
157 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/JPShinjitaiCharacters.txt:
--------------------------------------------------------------------------------
1 | 両	兩 輛
2 | 弁	辨 辯 瓣 辦 弁
3 | 御	御 禦
4 | 欠	缺 欠
5 | 糸	絲 糸
6 | 芸	藝 芸
7 | 浜	濱 浜
8 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/JPShinjitaiPhrases.txt:
--------------------------------------------------------------------------------
  1 | 一獲千金	一攫千金
  2 | 丁寧	叮嚀
  3 | 丁重	鄭重
  4 | 三差路	三叉路
  5 | 世論	輿論
  6 | 亜鈴	啞鈴
  7 | 交差	交叉
  8 | 供宴	饗宴
  9 | 俊馬	駿馬
 10 | 保塁	堡壘
 11 | 個条書	箇条書
 12 | 偏平	扁平
 13 | 停泊	碇泊
 14 | 優俊	優駿
 15 | 先兵	尖兵
 16 | 先鋭	尖鋭
 17 | 共役	共軛
 18 | 冗舌	饒舌
 19 | 凶器	兇器
 20 | 削岩	鑿岩
 21 | 包丁	庖丁
 22 | 包帯	繃帯
 23 | 区画	區劃
 24 | 厳然	儼然
 25 | 友宜	友誼
 26 | 反乱	叛乱
 27 | 収集	蒐集
 28 | 叙情	抒情
 29 | 台頭	擡頭
 30 | 合弁	合辦
 31 | 喜遊曲	嬉遊曲
 32 | 嘆願	歎願
 33 | 回転	廻転
 34 | 回遊	回游
 35 | 奉持	捧持
 36 | 委縮	萎縮
 37 | 展転	輾轉
 38 | 希少	稀少
 39 | 幻惑	眩惑
 40 | 広範	廣汎
 41 | 広野	曠野
 42 | 廃虚	廢墟
 43 | 建坪率	建蔽率
 44 | 弁当	辨當
 45 | 弁膜	瓣膜
 46 | 弁護	辯護
 47 | 弁髪	辮髮
 48 | 弦歌	絃歌
 49 | 恩義	恩誼
 50 | 意向	意嚮
 51 | 慰謝料	慰藉料
 52 | 憶断	臆断
 53 | 憶病	臆病
 54 | 戦没	戰歿
 55 | 扇情	煽情
 56 | 手帳	手帖
 57 | 技量	伎倆
 58 | 抜粋	抜萃
 59 | 披歴	披瀝
 60 | 抵触	牴触
 61 | 抽選	抽籤
 62 | 拘引	勾引
 63 | 拠出	醵出
 64 | 拠金	醵金
 65 | 掘削	掘鑿
 66 | 控除	扣除
 67 | 援護	掩護
 68 | 放棄	抛棄
 69 | 散水	撒水
 70 | 敬謙	敬虔
 71 | 敷延	敷衍
 72 | 断固	断乎
 73 | 族生	簇生
 74 | 昇叙	陞敘
 75 | 暖房	煖房
 76 | 暗唱	暗誦
 77 | 暗夜	闇夜
 78 | 暴露	曝露
 79 | 枯渇	涸渇
 80 | 格好	恰好
 81 | 格幅	恰幅
 82 | 棄損	毀損
 83 | 模索	摸索
 84 | 橋頭保	橋頭堡
 85 | 欠缺	欠缺
 86 | 死体	屍體
 87 | 殿部	臀部
 88 | 母指	拇指
 89 | 気迫	気魄
 90 | 決別	訣別
 91 | 決壊	決潰
 92 | 沈殿	沈澱
 93 | 油送船	油槽船
 94 | 波乱	波瀾
 95 | 注釈	註釋
 96 | 洗浄	洗滌 洗浄
 97 | 活発	活潑
 98 | 浸透	滲透
 99 | 浸食	浸蝕
100 | 消却	銷卻
101 | 混然	渾然
102 | 湾曲	彎曲
103 | 溶接	熔接
104 | 漁労	漁撈
105 | 漂然	飄然
106 | 激高	激昂
107 | 火炎	火焰
108 | 焦燥	焦躁
109 | 班点	斑点
110 | 留飲	溜飲
111 | 略奪	掠奪
112 | 疎通	疏通
113 | 発酵	醱酵
114 | 白亜	白堊
115 | 相克	相剋
116 | 知恵	智慧
117 | 破棄	破毀
118 | 確固	確乎
119 | 禁固	禁錮
120 | 符丁	符牒
121 | 粉装	扮装
122 | 紫班	紫斑
123 | 終息	終熄
124 | 総合	綜合
125 | 編集	編輯
126 | 義援	義捐
127 | 耕運機	耕耘機
128 | 肝心	肝腎
129 | 肩甲骨	肩胛骨
130 | 背徳	悖德
131 | 脈拍	脈搏
132 | 膨張	膨脹
133 | 芳純	芳醇
134 | 英知	叡智
135 | 蒸留	蒸溜
136 | 薫蒸	燻蒸
137 | 薫製	燻製
138 | 衣装	衣裳
139 | 衰退	衰退 衰頽
140 | 裕然	悠然
141 | 補佐	輔佐
142 | 訓戒	訓誡
143 | 試練	試煉
144 | 詭弁	詭辯
145 | 講和	媾和
146 | 象眼	象嵌
147 | 貫録	貫禄
148 | 買弁	買辦
149 | 賛辞	讚辭
150 | 踏襲	蹈襲
151 | 車両	車輛
152 | 転倒	顛倒
153 | 輪郭	輪廓
154 | 退色	褪色
155 | 途絶	杜絶
156 | 連係	連繫
157 | 連合	聯合
158 | 選考	銓衡
159 | 酢酸	醋酸
160 | 野卑	野鄙
161 | 鉱石	礦石
162 | 間欠	間歇
163 | 関数	函數
164 | 防御	防禦
165 | 険阻	嶮岨
166 | 障壁	牆壁
167 | 障害	障礙
168 | 隠滅	湮滅
169 | 集落	聚落
170 | 雇用	雇傭
171 | 風諭	諷喩
172 | 飛語	蜚語
173 | 香典	香奠
174 | 骨格	骨骼
175 | 高進	亢進
176 | 鳥観	鳥瞰
177 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/JPVariants.txt:
--------------------------------------------------------------------------------
  1 | 乘	乗
  2 | 亂	乱
  3 | 亙	亘
  4 | 亞	亜
  5 | 佛	仏
  6 | 來	来
  7 | 假	仮
  8 | 傳	伝
  9 | 僞	偽
 10 | 價	価
 11 | 儉	倹
 12 | 兒	児
 13 | 內	内
 14 | 兩	両
 15 | 剎	刹
 16 | 剩	剰
 17 | 劍	剣
 18 | 劑	剤
 19 | 勞	労
 20 | 勳	勲
 21 | 勵	励
 22 | 勸	勧
 23 | 勻	匀
 24 | 區	区
 25 | 卷	巻
 26 | 卻	却
 27 | 參	参
 28 | 吳	呉
 29 | 咒	呪
 30 | 啞	唖
 31 | 單	単
 32 | 噓	嘘
 33 | 嚙	噛
 34 | 嚴	厳
 35 | 囑	嘱
 36 | 圈	圏
 37 | 國	国
 38 | 圍	囲
 39 | 圓	円
 40 | 圖	図
 41 | 團	団
 42 | 增	増
 43 | 墮	堕
 44 | 壓	圧
 45 | 壘	塁
 46 | 壞	壊
 47 | 壤	壌
 48 | 壯	壮
 49 | 壹	壱
 50 | 壽	寿
 51 | 奧	奥
 52 | 奬	奨
 53 | 妝	粧
 54 | 孃	嬢
 55 | 學	学
 56 | 寢	寝
 57 | 實	実
 58 | 寫	写
 59 | 寬	寛
 60 | 寶	宝
 61 | 將	将
 62 | 專	専
 63 | 對	対
 64 | 屆	届
 65 | 屬	属
 66 | 峯	峰
 67 | 峽	峡
 68 | 嶽	岳
 69 | 巖	巌
 70 | 巢	巣
 71 | 帶	帯
 72 | 廁	厠
 73 | 廢	廃
 74 | 廣	広
 75 | 廳	庁
 76 | 彈	弾
 77 | 彌	弥
 78 | 彎	弯
 79 | 彥	彦
 80 | 徑	径
 81 | 從	従
 82 | 徵	徴
 83 | 德	徳
 84 | 恆	恒
 85 | 悅	悦
 86 | 惠	恵
 87 | 惡	悪
 88 | 惱	悩
 89 | 慘	惨
 90 | 應	応
 91 | 懷	懐
 92 | 戀	恋
 93 | 戰	戦
 94 | 戲	戯
 95 | 戶	戸
 96 | 戾	戻
 97 | 拂	払
 98 | 拔	抜
 99 | 拜	拝
100 | 挾	挟
101 | 插	挿
102 | 揭	掲
103 | 搔	掻
104 | 搖	揺
105 | 搜	捜
106 | 摑	掴
107 | 擇	択
108 | 擊	撃
109 | 擔	担
110 | 據	拠
111 | 擴	拡
112 | 攝	摂
113 | 攪	撹
114 | 收	収
115 | 效	効
116 | 敕	勅
117 | 敘	叙
118 | 數	数
119 | 斷	断
120 | 晉	晋
121 | 晚	晩
122 | 晝	昼
123 | 暨	曁
124 | 曆	暦
125 | 曉	暁
126 | 曾	曽
127 | 會	会
128 | 枡	桝
129 | 查	査
130 | 條	条
131 | 棧	桟
132 | 棱	稜 棱
133 | 榆	楡
134 | 榮	栄
135 | 樂	楽
136 | 樓	楼
137 | 樞	枢
138 | 樣	様
139 | 橫	横
140 | 檢	検
141 | 櫻	桜
142 | 權	権
143 | 歐	欧
144 | 歡	歓
145 | 步	歩
146 | 歲	歳
147 | 歷	歴
148 | 歸	帰
149 | 殘	残
150 | 殼	殻
151 | 毆	殴
152 | 每	毎
153 | 氣	気
154 | 污	汚
155 | 沒	没
156 | 涉	渉
157 | 淚	涙
158 | 淨	浄
159 | 淺	浅
160 | 渴	渇
161 | 溌	潑
162 | 溪	渓
163 | 溫	温
164 | 溼	湿
165 | 滯	滞
166 | 滿	満
167 | 潛	潜
168 | 澀	渋
169 | 澤	沢
170 | 濟	済
171 | 濤	涛
172 | 濱	浜
173 | 濾	沪
174 | 瀧	滝
175 | 瀨	瀬
176 | 灣	湾
177 | 焰	焔
178 | 燈	灯
179 | 燒	焼
180 | 營	営
181 | 爐	炉
182 | 爭	争
183 | 爲	為
184 | 牀	床
185 | 犧	犠
186 | 狀	状
187 | 狹	狭
188 | 獨	独
189 | 獵	猟
190 | 獸	獣
191 | 獻	献
192 | 瓣	弁
193 | 產	産
194 | 畫	画
195 | 當	当
196 | 疊	畳
197 | 疎	疏
198 | 痹	痺
199 | 瘦	痩
200 | 癡	痴
201 | 發	発
202 | 皋	皐
203 | 盜	盗
204 | 盡	尽
205 | 碎	砕
206 | 祕	秘
207 | 祿	禄
208 | 禦	御
209 | 禪	禅
210 | 禮	礼
211 | 禱	祷
212 | 稅	税
213 | 稱	称
214 | 稻	稲
215 | 穎	頴
216 | 穗	穂
217 | 穩	穏
218 | 穰	穣
219 | 竃	竈
220 | 竊	窃
221 | 粹	粋
222 | 糉	粽
223 | 絕	絶
224 | 絲	糸
225 | 經	経
226 | 綠	緑
227 | 緖	緒
228 | 緣	縁
229 | 縣	県
230 | 縱	縦
231 | 總	総
232 | 繋	繫
233 | 繡	繍
234 | 繩	縄
235 | 繪	絵
236 | 繼	継
237 | 續	続
238 | 纔	才
239 | 纖	繊
240 | 缺	欠
241 | 罐	缶
242 | 羣	群
243 | 聯	連
244 | 聰	聡
245 | 聲	声
246 | 聽	聴
247 | 肅	粛
248 | 脣	唇
249 | 脫	脱
250 | 腦	脳
251 | 腳	脚
252 | 膽	胆
253 | 臟	臓
254 | 臺	台
255 | 與	与
256 | 舉	挙
257 | 舊	旧
258 | 舍	舎
259 | 荔	茘
260 | 莊	荘
261 | 莖	茎
262 | 菸	煙
263 | 萊	莱
264 | 萬	万
265 | 蔣	蒋
266 | 蔥	葱
267 | 薰	薫
268 | 藏	蔵
269 | 藝	芸
270 | 藥	薬
271 | 蘆	芦
272 | 處	処
273 | 虛	虚
274 | 號	号
275 | 螢	蛍
276 | 蟲	虫
277 | 蠟	蝋
278 | 蠶	蚕
279 | 蠻	蛮
280 | 裝	装
281 | 覺	覚
282 | 覽	覧
283 | 觀	観
284 | 觸	触
285 | 說	説
286 | 謠	謡
287 | 證	証
288 | 譯	訳
289 | 譽	誉
290 | 讀	読
291 | 變	変
292 | 讓	譲
293 | 豐	豊
294 | 豫	予
295 | 貓	猫
296 | 貳	弐
297 | 賣	売
298 | 賴	頼
299 | 贊	賛
300 | 贗	贋
301 | 踐	践
302 | 輕	軽
303 | 輛	輌
304 | 轉	転
305 | 辨	弁
306 | 辭	辞
307 | 辯	弁
308 | 遞	逓
309 | 遥	遙
310 | 遲	遅
311 | 邊	辺
312 | 鄉	郷
313 | 酢	醋
314 | 醉	酔
315 | 醗	醱
316 | 醫	医
317 | 醬	醤
318 | 釀	醸
319 | 釋	釈
320 | 鋪	舗
321 | 錄	録
322 | 錢	銭
323 | 鍊	錬
324 | 鐵	鉄
325 | 鑄	鋳
326 | 鑛	鉱
327 | 閱	閲
328 | 關	関
329 | 陷	陥
330 | 隨	随
331 | 險	険
332 | 隱	隠
333 | 雙	双
334 | 雜	雑
335 | 雞	鶏
336 | 霸	覇
337 | 靈	霊
338 | 靜	静
339 | 顏	顔
340 | 顯	顕
341 | 餘	余
342 | 騷	騒
343 | 驅	駆
344 | 驗	験
345 | 驛	駅
346 | 髓	髄
347 | 體	体
348 | 髮	髪
349 | 鬥	闘
350 | 鱉	鼈
351 | 鷗	鴎
352 | 鹼	鹸
353 | 鹽	塩
354 | 麥	麦
355 | 麪	麺
356 | 麴	麹
357 | 黃	黄
358 | 黑	黒
359 | 默	黙
360 | 點	点
361 | 黨	党
362 | 齊	斉
363 | 齋	斎
364 | 齒	歯
365 | 齡	齢
366 | 龍	竜
367 | 龜	亀
368 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/STPhrases_Ext.txt:
--------------------------------------------------------------------------------
 1 | 干锅鸡	幹鍋雞
 2 | 干炒牛河	乾炒牛河
 3 | 松脆饼干	鬆脆餅乾
 4 | 干李子	乾李子
 5 | 干皮症	乾皮症
 6 | 不干燥	不乾燥
 7 | 数个	數箇
 8 | 多个	多箇
 9 | 一个	一箇
10 | 计算	計算
11 | 师范大学	師範大學


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/TSPhrases_Ext.txt:
--------------------------------------------------------------------------------
1 | 乾清宫	乾清宫


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/TWPhrasesName.txt:
--------------------------------------------------------------------------------
 1 | 乍得	查德
 2 | 也門	葉門
 3 | 仙童半導體	快捷半導體
 4 | 伯利茲	貝里斯
 5 | 佛得角	維德角
 6 | 傅里葉	傅立葉
 7 | 克羅地亞	克羅埃西亞
 8 | 列支敦士登	列支敦斯登
 9 | 利比里亞	賴比瑞亞
10 | 加納	迦納
11 | 加蓬	加彭
12 | 博茨瓦納	波札那
13 | 卡塔爾	卡達
14 | 危地馬拉	瓜地馬拉
15 | 厄瓜多爾	厄瓜多
16 | 厄立特里亞	厄利垂亞
17 | 吉布堤	吉布地
18 | 哈薩克斯坦	哈薩克
19 | 哥斯達黎加	哥斯大黎加
20 | 喫茶小舖	喫茶小舖
21 | 圖瓦盧	吐瓦魯
22 | 土庫曼斯坦	土庫曼
23 | 圭亞那	蓋亞那
24 | 坦桑尼亞	坦尚尼亞
25 | 埃塞俄比亞	衣索比亞
26 | 基里巴斯	吉里巴斯
27 | 塔吉克斯坦	塔吉克
28 | 塞拉利昂	獅子山
29 | 塞浦路斯	塞普勒斯
30 | 塞舌爾	塞席爾
31 | 多米尼加	多明尼加
32 | 安提瓜和巴布達	安地卡及巴布達
33 | 尼日利亞	奈及利亞
34 | 尼日爾	尼日
35 | 岡比亞	甘比亞
36 | 巴巴多斯	巴貝多
37 | 巴布亞新幾內亞	巴布亞紐幾內亞
38 | 布基納法索	布吉納法索
39 | 布隆迪	蒲隆地
40 | 帕勞	帛琉
41 | 幾內亞比紹	幾內亞比索
42 | 意大利	義大利
43 | 所羅門羣島	索羅門羣島
44 | 文萊	汶萊
45 | 斯威士蘭	史瓦濟蘭
46 | 斯洛文尼亞	斯洛維尼亞
47 | 新西蘭	紐西蘭
48 | 格林納達	格瑞那達
49 | 格魯吉亞	喬治亞
50 | 歐拉	尤拉
51 | 毛里塔尼亞	茅利塔尼亞
52 | 毛里求斯	模里西斯
53 | 沙特阿拉伯	沙烏地阿拉伯
54 | 波斯尼亞黑塞哥維那	波士尼亞赫塞哥維納
55 | 津巴布韋	辛巴威
56 | 洪都拉斯	宏都拉斯
57 | 溫納圖萬	那杜
58 | 烏茲別克斯坦	烏茲別克
59 | 特立尼達和多巴哥	千里達及托巴哥
60 | 瑙魯	諾魯
61 | 瓦努阿圖	萬那杜
62 | 盧旺達	盧安達
63 | 科摩羅	葛摩
64 | 科特迪瓦	象牙海岸
65 | 突尼斯	突尼西亞
66 | 純喫茶	純喫茶
67 | 索馬里	索馬利亞
68 | 老撾	寮國
69 | 聖基茨和尼維斯	聖克里斯多福及尼維斯
70 | 聖文森特和格林納丁斯	聖文森及格瑞那丁
71 | 聖盧西亞	聖露西亞
72 | 聖馬力諾	聖馬利諾
73 | 肯尼亞	肯亞
74 | 莫桑比克	莫三比克
75 | 萊索托	賴索托
76 | 萬象	永珍
77 | 蘇里南	蘇利南
78 | 貝寧	貝南
79 | 贊比亞	尚比亞
80 | 阿塞拜疆	亞塞拜然
81 | 阿拉伯聯合酋長國	阿拉伯聯合大公國
82 | 香農	夏農
83 | 馬爾代夫	馬爾地夫
84 | 馬里共和國	馬利共和國
85 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/TWPhrasesOther.txt:
--------------------------------------------------------------------------------
 1 | 元音	母音
 2 | 冰棍	冰棒
 3 | 出租車	計程車
 4 | 咖喱	咖哩
 5 | 塑料	塑膠
 6 | 奔馳	賓士
 7 | 奶酪	乳酪
 8 | 幾率	機率
 9 | 方便麪	泡麵 速食麵
10 | 李彥宏	李彥宏
11 | 概率	機率
12 | 海內存知己	海內存知己
13 | 涼菜	冷盤
14 | 的士	計程車
15 | 砹	砈
16 | 硅	矽
17 | 程序不正義	程序不正義
18 | 程序正義	程序正義
19 | 空氣淨化器	空氣清淨機
20 | 納米	奈米
21 | 自行車	腳踏車
22 | 詞組	片語
23 | 蹦極	高空彈跳
24 | 輔音	子音
25 | 通過	透過 通過
26 | 酰	醯
27 | 鈁	鍅
28 | 鈈	鈽
29 | 錇	鉳
30 | 鍀	鎝
31 | 鎄	鑀
32 | 鎇	鋂
33 | 鎿	錼
34 | 鐦	鉲
35 | 鑥	鎦
36 | 黃宏	黃宏
37 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/TWVariants.txt:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 啓	啟
 3 | 喫	吃
 4 | 嫺	嫻
 5 | 嬀	媯
 6 | 峯	峰
 7 | 幺	么
 8 | 擡	抬
 9 | 棱	稜
10 | 檐	簷
11 | 污	汙
12 | 泄	洩
13 | 潙	溈
14 | 潨	潀
15 | 爲	為
16 | 牀	床
17 | 痹	痺
18 | 癡	痴
19 | 皁	皂
20 | 着	著
21 | 睾	睪
22 | 祕	秘
23 | 竈	灶
24 | 糉	粽
25 | 繮	韁
26 | 纔	才
27 | 羣	群
28 | 脣	唇
29 | 蔘	參
30 | 蔿	蒍
31 | 衆	眾
32 | 裏	裡
33 | 覈	核
34 | 踊	踴
35 | 鉢	缽
36 | 鍼	針
37 | 鮎	鯰
38 | 麪	麵
39 | 齶	顎
40 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Transformation.Build/dict/TWVariantsRevPhrases.txt:
--------------------------------------------------------------------------------
 1 | 一口吃個	一口喫個
 2 | 一口吃成	一口喫成
 3 | 一家三口	一家三口
 4 | 一家五口	一家五口
 5 | 一家六口	一家六口
 6 | 一家四口	一家四口
 7 | 凶事	凶事
 8 | 凶信	凶信
 9 | 凶兆	凶兆
10 | 凶吉	凶吉
11 | 凶地	凶地
12 | 凶多吉少	凶多吉少
13 | 凶宅	凶宅
14 | 凶年	凶年
15 | 凶德	凶德
16 | 凶怪	凶怪
17 | 凶日	凶日
18 | 凶服	凶服
19 | 凶歲	凶歲
20 | 凶死	凶死
21 | 凶氣	凶氣
22 | 凶煞	凶煞
23 | 凶燄	凶燄
24 | 凶神	凶神
25 | 凶禮	凶禮
26 | 凶耗	凶耗
27 | 凶肆	凶肆
28 | 凶荒	凶荒
29 | 凶訊	凶訊
30 | 凶豎	凶豎
31 | 凶身	凶身
32 | 凶逆	凶逆
33 | 凶門	凶門
34 | 口吃	口吃
35 | 吃口	喫口 吃口
36 | 吃口令	吃口令
37 | 吃口飯	喫口飯
38 | 吃吃	喫喫 吃吃
39 | 吃子	喫子 吃子
40 | 合著	合著
41 | 吉凶	吉凶
42 | 名著	名著
43 | 四凶	四凶
44 | 大凶	大凶
45 | 巨著	巨著
46 | 張口	張口
47 | 昭著	昭著
48 | 歲凶	歲凶
49 | 胃口	胃口
50 | 著作	著作
51 | 著名	著名
52 | 著式	著式
53 | 著志	著志
54 | 著於	著於
55 | 著書	著書
56 | 著白	著白
57 | 著稱	著稱
58 | 著者	著者
59 | 著述	著述
60 | 著錄	著錄
61 | 蹇吃	蹇吃
62 | 逢凶	逢凶
63 | 避凶	避凶
64 | 鄧艾吃	鄧艾吃
65 | 鉅著	鉅著
66 | 開口	開口
67 | 閔凶	閔凶
68 | 顯著	顯著
69 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Benchmark/Talk.txt:
--------------------------------------------------------------------------------
 1 | 什么是 Nginx?
 2 | 
 3 | Nginx (Engine X)是一个轻量级的Web服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器、高性能的HTTP服务器,它以高稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
 4 | 什么是反向代理?
 5 | 
 6 | 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器,在做HTTP反向代理和负载均衡时,特意要注意开启HTTP长连接的支持。
 7 | 
 8 | Nginx原理简介
 9 | 
10 | Nginx有一个主进程(Master)和几个工作进程(Worker),采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。
11 | 
12 |     主进程(Master)目的是读取和评估配置,并维护工作进程。
13 |     工作进程(Worker)对请求进行处理,工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量 worker_processes。
14 | 
15 | Nginx模块化机制
16 | 
17 | Nginx是模块化的系统,整个系统是分成一个个模块的,每个模块负责不同的功能。在上面的configure指令中带了很多参数,就是在这里编译之前可以加入某些模块或去掉某些模块的。我们会把要用的模块再源码编译的时候就编译进入到Nginx了,那要怎么用这些模块呢?那就得通过配置文件来实现。接下来我们就开始使用入门配置实践指南阶段,进行学习。
18 | 
19 | 
20 | 利反对派称包围卡扎菲和其儿子藏身建筑群
21 | [利反对派称今日将结束战斗][利反对派称8个月内举行大选][最新]
22 | 云南海南3省区党委主要负责人职务调整
23 | [陈全国任西藏党委书记][秦光荣任云南书记][罗保铭任海南书记]
24 | 苹果CEO乔布斯辞职 COO接任 乔布斯语录
25 | [乔布斯仍为董事会主席 辞职信 苹果股价盘后大跌5.39% 热议]
26 | 首届政务微博论坛在浙江举行 
27 | 赵洪祝致贺信[图文直播][视频直播][中国高官开微博成趋势][热议]
28 | 铁道部要求年底前无事故 
29 | 党员须做公开承诺 胡锦涛会见萨科齐 希望欧方确保中方对欧投资安全 
30 | 杭州为接住坠楼小孩“最美妈妈”
31 | 建城市雕塑(图) 神八将搭载“平民梦想”进太空 故宫诗词大赛 
32 | 卡扎菲倒台了值班编辑:沈建军 
33 | 乔布斯辞职了值班编辑:杨达 今日话题百人械斗 医院怎成黑社会
34 |  


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Benchmark/ToolGood.Words.Benchmark.csproj:
--------------------------------------------------------------------------------
 1 | <Project Sdk="Microsoft.NET.Sdk">
 2 | 
 3 |   <PropertyGroup>
 4 |     <OutputType>Exe</OutputType>
 5 |     <TargetFramework>net8.0</TargetFramework>
 6 |     <ImplicitUsings>enable</ImplicitUsings>
 7 |     <Nullable>disable</Nullable>
 8 |     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
 9 |   </PropertyGroup>
10 | 
11 |   <ItemGroup>
12 |     <PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
13 |   </ItemGroup>
14 | 
15 |   <ItemGroup>
16 |     <ProjectReference Include="..\ToolGood.Words\ToolGood.Words.csproj" />
17 |   </ItemGroup>
18 | 
19 |   <ItemGroup>
20 |     <None Update="BadWord.txt">
21 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
22 |     </None>
23 |     <None Update="Talk.txt">
24 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
25 |     </None>
26 |   </ItemGroup>
27 | 
28 | </Project>
29 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Contrast/FilterTest/HashHelpers.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace Sinan.Util
 7 | {
 8 |     /// <summary>
 9 |     /// 从.net 编译出来的.
10 |     /// </summary>
11 |     internal static class HashHelpers
12 |     {
13 |         // Fields
14 |         internal static readonly int[] primes = new int[] {
15 |         3, 7, 11, 0x11, 0x17, 0x1d, 0x25, 0x2f, 0x3b, 0x47, 0x59, 0x6b, 0x83, 0xa3, 0xc5, 0xef,
16 |         0x125, 0x161, 0x1af, 0x209, 0x277, 0x2f9, 0x397, 0x44f, 0x52f, 0x63d, 0x78b, 0x91d, 0xaf1, 0xd2b, 0xfd1, 0x12fd,
17 |         0x16cf, 0x1b65, 0x20e3, 0x2777, 0x2f6f, 0x38ff, 0x446f, 0x521f, 0x628d, 0x7655, 0x8e01, 0xaa6b, 0xcc89, 0xf583, 0x126a7, 0x1619b,
18 |         0x1a857, 0x1fd3b, 0x26315, 0x2dd67, 0x3701b, 0x42023, 0x4f361, 0x5f0ed, 0x72125, 0x88e31, 0xa443b, 0xc51eb, 0xec8c1, 0x11bdbf, 0x154a3f, 0x198c4f,
19 |         0x1ea867, 0x24ca19, 0x2c25c1, 0x34fa1b, 0x3f928f, 0x4c4987, 0x5b8b6f, 0x6dda89
20 |         };
21 | 
22 | 
23 |         internal static int GetPrime(int min)
24 |         {
25 |             for (int i = 0; i < primes.Length; i++) {
26 |                 int num2 = primes[i];
27 |                 if (num2 >= min) {
28 |                     return num2;
29 |                 }
30 |             }
31 |             for (int j = min | 1; j < 0x7fffffff; j += 2) {
32 |                 if (IsPrime(j)) {
33 |                     return j;
34 |                 }
35 |             }
36 |             return min;
37 |         }
38 | 
39 |         internal static bool IsPrime(int candidate)
40 |         {
41 |             if ((candidate & 1) == 0) {
42 |                 return (candidate == 2);
43 |             }
44 |             int num = (int)Math.Sqrt((double)candidate);
45 |             for (int i = 3; i <= num; i += 2) {
46 |                 if ((candidate % i) == 0) {
47 |                     return false;
48 |                 }
49 |             }
50 |             return true;
51 |         }
52 |     }
53 | }
54 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Contrast/FilterTest/IWordFilter.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | 
 4 | namespace Sinan.Util
 5 | {
 6 |     public interface IWordFilter
 7 |     {
 8 |         void AddKey(string key);
 9 |         bool HasBadWord(string text);
10 |         string FindOne(string text);
11 |         List<string> FindAll(string text);
12 |         string Replace(string text, char mask = '*');
13 |     }
14 | }
15 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Contrast/Talk.txt:
--------------------------------------------------------------------------------
 1 | 什么是 Nginx?
 2 | 
 3 | Nginx (Engine X)是一个轻量级的Web服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器、高性能的HTTP服务器,它以高稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
 4 | 什么是反向代理?
 5 | 
 6 | 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器,在做HTTP反向代理和负载均衡时,特意要注意开启HTTP长连接的支持。
 7 | 
 8 | Nginx原理简介
 9 | 
10 | Nginx有一个主进程(Master)和几个工作进程(Worker),采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。
11 | 
12 |     主进程(Master)目的是读取和评估配置,并维护工作进程。
13 |     工作进程(Worker)对请求进行处理,工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量 worker_processes。
14 | 
15 | Nginx模块化机制
16 | 
17 | Nginx是模块化的系统,整个系统是分成一个个模块的,每个模块负责不同的功能。在上面的configure指令中带了很多参数,就是在这里编译之前可以加入某些模块或去掉某些模块的。我们会把要用的模块再源码编译的时候就编译进入到Nginx了,那要怎么用这些模块呢?那就得通过配置文件来实现。接下来我们就开始使用入门配置实践指南阶段,进行学习。
18 | 
19 | 
20 | 利反对派称包围卡扎菲和其儿子藏身建筑群
21 | [利反对派称今日将结束战斗][利反对派称8个月内举行大选][最新]
22 | 云南海南3省区党委主要负责人职务调整
23 | [陈全国任西藏党委书记][秦光荣任云南书记][罗保铭任海南书记]
24 | 苹果CEO乔布斯辞职 COO接任 乔布斯语录
25 | [乔布斯仍为董事会主席 辞职信 苹果股价盘后大跌5.39% 热议]
26 | 首届政务微博论坛在浙江举行 
27 | 赵洪祝致贺信[图文直播][视频直播][中国高官开微博成趋势][热议]
28 | 铁道部要求年底前无事故 
29 | 党员须做公开承诺 胡锦涛会见萨科齐 希望欧方确保中方对欧投资安全 
30 | 杭州为接住坠楼小孩“最美妈妈”
31 | 建城市雕塑(图) 神八将搭载“平民梦想”进太空 故宫诗词大赛 
32 | 卡扎菲倒台了值班编辑:沈建军 
33 | 乔布斯辞职了值班编辑:杨达 今日话题百人械斗 医院怎成黑社会
34 |  


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Contrast/ToolGood.Words.Contrast.csproj:
--------------------------------------------------------------------------------
 1 | <Project Sdk="Microsoft.NET.Sdk">
 2 | 
 3 |   <PropertyGroup>
 4 |     <OutputType>Exe</OutputType>
 5 |     <TargetFramework>net8.0</TargetFramework>
 6 |     <ImplicitUsings>enable</ImplicitUsings>
 7 |     <Nullable>disable</Nullable>
 8 |     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
 9 |   </PropertyGroup>
10 | 
11 |   <ItemGroup>
12 |     <ProjectReference Include="..\ToolGood.Words\ToolGood.Words.csproj" />
13 |   </ItemGroup>
14 | 
15 |   <ItemGroup>
16 |     <None Update="BadWord.txt">
17 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
18 |     </None>
19 |     <None Update="Talk.txt">
20 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
21 |     </None>
22 |   </ItemGroup>
23 | 
24 | </Project>
25 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/Form1.resx:
--------------------------------------------------------------------------------
 1 | <root>
 2 |   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 3 |     <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
 4 |     <xsd:element name="root" msdata:IsDataSet="true">
 5 |       <xsd:complexType>
 6 |         <xsd:choice maxOccurs="unbounded">
 7 |           <xsd:element name="metadata">
 8 |             <xsd:complexType>
 9 |               <xsd:sequence>
10 |                 <xsd:element name="value" type="xsd:string" minOccurs="0" />
11 |               </xsd:sequence>
12 |               <xsd:attribute name="name" use="required" type="xsd:string" />
13 |               <xsd:attribute name="type" type="xsd:string" />
14 |               <xsd:attribute name="mimetype" type="xsd:string" />
15 |               <xsd:attribute ref="xml:space" />
16 |             </xsd:complexType>
17 |           </xsd:element>
18 |           <xsd:element name="assembly">
19 |             <xsd:complexType>
20 |               <xsd:attribute name="alias" type="xsd:string" />
21 |               <xsd:attribute name="name" type="xsd:string" />
22 |             </xsd:complexType>
23 |           </xsd:element>
24 |           <xsd:element name="data">
25 |             <xsd:complexType>
26 |               <xsd:sequence>
27 |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
28 |                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
29 |               </xsd:sequence>
30 |               <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
31 |               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
32 |               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
33 |               <xsd:attribute ref="xml:space" />
34 |             </xsd:complexType>
35 |           </xsd:element>
36 |           <xsd:element name="resheader">
37 |             <xsd:complexType>
38 |               <xsd:sequence>
39 |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
40 |               </xsd:sequence>
41 |               <xsd:attribute name="name" type="xsd:string" use="required" />
42 |             </xsd:complexType>
43 |           </xsd:element>
44 |         </xsd:choice>
45 |       </xsd:complexType>
46 |     </xsd:element>
47 |   </xsd:schema>
48 |   <resheader name="resmimetype">
49 |     <value>text/microsoft-resx</value>
50 |   </resheader>
51 |   <resheader name="version">
52 |     <value>2.0</value>
53 |   </resheader>
54 |   <resheader name="reader">
55 |     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
56 |   </resheader>
57 |   <resheader name="writer">
58 |     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
59 |   </resheader>
60 | </root>


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/Pinyin/WordsSearchExBuild.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.ComponentModel.DataAnnotations.Schema;
 4 | using System.IO;
 5 | using System.Text;
 6 | using ToolGood.Words.internals;
 7 | 
 8 | namespace ToolGood.PinYin.Build.Pinyin
 9 | {
10 |     public class WordsSearchExBuild : BaseSearchEx
11 |     {
12 | 
13 |         public void SaveFile(BinaryWriter bw)
14 |         {
15 |             byte[] _keywordsLengths = new byte[_keywords.Length];
16 |             for (int i = 0; i < _keywordsLengths.Length; i++) {
17 |                 _keywordsLengths[i] = (byte)_keywords[i].Length;
18 |             }
19 |             bw.Write(_keywordsLengths.Length);
20 |             bw.Write(_keywordsLengths);
21 | 
22 |             var bs = IntArrToByteArr(_dict);
23 |             bw.Write(bs.Length);
24 |             bw.Write(bs);
25 | 
26 |             bs = IntArrToByteArr(_first);
27 |             bw.Write(bs.Length);
28 |             bw.Write(bs);
29 | 
30 |             bs = IntArrToByteArr(_end);
31 |             bw.Write(bs.Length);
32 |             bw.Write(bs);
33 | 
34 |             bs = IntArrToByteArr(_resultIndex);
35 |             bw.Write(bs.Length);
36 |             bw.Write(bs);
37 | 
38 |             //List<int> Index = new List<int>() { 0 };
39 |             //List<ushort> keysList = new List<ushort>();
40 |             //List<int> valuesList = new List<int>();
41 |             //foreach (var dict in _nextIndex) {
42 |             //    var keys = dict.Keys;
43 |             //    var values = dict.Values;
44 |             //    keysList.AddRange(keys);
45 |             //    valuesList.AddRange(values);
46 |             //    Index.Add(keysList.Count);
47 |             //}
48 | 
49 |             //bs = IntArrToByteArr(Index.ToArray());
50 |             //bw.Write(bs.Length);
51 |             //bw.Write(bs);
52 | 
53 |             //bs = IntArrToByteArr(keysList.ToArray());
54 |             //bw.Write(bs.Length);
55 |             //bw.Write(bs);
56 | 
57 | 
58 |             //bs = IntArrToByteArr(valuesList.ToArray());
59 |             //bw.Write(bs.Length);
60 |             //bw.Write(bs);
61 | 
62 |             bw.Write(_nextIndex.Length);
63 |             foreach (var dict in _nextIndex) {
64 |                 var keys = dict.Keys;
65 |                 var values = dict.Values;
66 | 
67 |                 bs = IntArrToByteArr(keys);
68 |                 bw.Write(bs.Length);
69 |                 bw.Write(bs);
70 | 
71 |                 bs = IntArrToByteArr(values);
72 |                 bw.Write(bs.Length);
73 |                 bw.Write(bs);
74 |             }
75 |         }
76 | 
77 | 
78 |     }
79 | }
80 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/Program.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Threading.Tasks;
 5 | using System.Windows.Forms;
 6 | 
 7 | namespace ToolGood.Words.ReferenceHelper
 8 | {
 9 |     static class Program
10 |     {
11 |         /// <summary>
12 |         ///  The main entry point for the application.
13 |         /// </summary>
14 |         [STAThread]
15 |         static void Main()
16 |         {
17 |             Application.SetHighDpiMode(HighDpiMode.SystemAware);
18 |             Application.EnableVisualStyles();
19 |             Application.SetCompatibleTextRenderingDefault(false);
20 |             Application.Run(new Form1());
21 |         }
22 |     }
23 | }
24 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/Properties/PublishProfiles/FolderProfile.pubxml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 | https://go.microsoft.com/fwlink/?LinkID=208121. 
 4 | -->
 5 | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 6 |   <PropertyGroup>
 7 |     <Configuration>Release</Configuration>
 8 |     <Platform>Any CPU</Platform>
 9 |     <PublishDir>bin\Release\net5.0-windows\publish\</PublishDir>
10 |     <PublishProtocol>FileSystem</PublishProtocol>
11 |     <TargetFramework>net6.0-windows</TargetFramework>
12 |     <RuntimeIdentifier>win-x86</RuntimeIdentifier>
13 |     <SelfContained>true</SelfContained>
14 |     <PublishSingleFile>True</PublishSingleFile>
15 |     <PublishReadyToRun>False</PublishReadyToRun>
16 |     <IncludeNativeLibrariesForSelfExtract>True</IncludeNativeLibrariesForSelfExtract>
17 |     <TrimMode>link</TrimMode>
18 |     <DebuggerSupport>false</DebuggerSupport>
19 |     <EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
20 |     <EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
21 |     <EventSourceSupport>false</EventSourceSupport>
22 |     <HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
23 |     <InvariantGlobalization>true</InvariantGlobalization>
24 |     <UseSystemResourceKeys>true</UseSystemResourceKeys>
25 |     <TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
26 | 	 <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
27 |   </PropertyGroup>
28 | </Project>


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/ToolGood.Words.ReferenceHelper.csproj:
--------------------------------------------------------------------------------
 1 | <Project Sdk="Microsoft.NET.Sdk">
 2 | 
 3 |   <PropertyGroup>
 4 |     <OutputType>WinExe</OutputType>
 5 |     <TargetFramework>net8.0-windows</TargetFramework>
 6 |     <UseWindowsForms>true</UseWindowsForms>
 7 |     <AssemblyName>资源包生成器</AssemblyName>
 8 |   </PropertyGroup>
 9 | 
10 |   <ItemGroup>
11 |     <ProjectReference Include="..\ToolGood.Words\ToolGood.Words.csproj" />
12 |   </ItemGroup>
13 | 
14 |   <ItemGroup>
15 |     <None Update="dict\pinyinSrc\_py.txt">
16 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17 |     </None>
18 |     <None Update="dict\pinyinSrc\_py2.txt">
19 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
20 |     </None>
21 |     <None Update="dict\pinyinSrc\_pyName.txt">
22 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
23 |     </None>
24 |     <None Update="dict\pinyinSrc\_word.txt">
25 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
26 |     </None>
27 |     <None Update="dict\pinyinSrc\_wordRevise.txt">
28 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
29 |     </None>
30 |     <None Update="dict\_allPinyin.txt">
31 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
32 |     </None>
33 |     <None Update="dict\HKVariants.txt">
34 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
35 |     </None>
36 |     <None Update="dict\HKVariantsPhrases.txt">
37 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
38 |     </None>
39 |     <None Update="dict\HKVariantsRevPhrases.txt">
40 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
41 |     </None>
42 |     <None Update="dict\JPVariants.txt">
43 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
44 |     </None>
45 |     <None Update="dict\STCharacters.txt">
46 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
47 |     </None>
48 |     <None Update="dict\STPhrases.txt">
49 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
50 |     </None>
51 |     <None Update="dict\STPhrases_Ext.txt">
52 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
53 |     </None>
54 |     <None Update="dict\TSCharacters.txt">
55 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
56 |     </None>
57 |     <None Update="dict\TSPhrases.txt">
58 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
59 |     </None>
60 |     <None Update="dict\TSPhrases_Ext.txt">
61 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
62 |     </None>
63 |     <None Update="dict\TWPhrasesIT.txt">
64 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
65 |     </None>
66 |     <None Update="dict\TWPhrasesName.txt">
67 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
68 |     </None>
69 |     <None Update="dict\TWPhrasesOther.txt">
70 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
71 |     </None>
72 |     <None Update="dict\TWVariants.txt">
73 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
74 |     </None>
75 |     <None Update="dict\TWVariantsRevPhrases.txt">
76 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
77 |     </None>
78 |     <None Update="dict\_pyName.txt">
79 |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
80 |     </None>
81 |   </ItemGroup>
82 | 
83 | </Project>


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/HKVariants.txt:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 兌	兑
 3 | 叄	叁
 4 | 只	只 衹
 5 | 啓	啓 啟
 6 | 喫	吃
 7 | 囪	囱
 8 | 妝	妝 粧
 9 | 媼	媪
10 | 嬀	媯
11 | 悅	悦
12 | 慍	愠
13 | 戶	户
14 | 挩	捝
15 | 搵	揾
16 | 擡	抬
17 | 敓	敚
18 | 敘	敍 敘
19 | 柺	枴
20 | 梲	棁
21 | 棱	稜 棱
22 | 榲	榅
23 | 檯	枱
24 | 氳	氲
25 | 涗	涚
26 | 溫	温
27 | 溼	濕
28 | 潙	溈
29 | 潨	潀
30 | 熅	煴
31 | 爲	為
32 | 癡	痴
33 | 皁	皂
34 | 祕	秘
35 | 稅	税
36 | 竈	灶
37 | 糉	粽 糉 糭
38 | 縕	緼
39 | 纔	才
40 | 脣	唇
41 | 脫	脱
42 | 膃	腽
43 | 臥	卧
44 | 臺	台
45 | 菸	煙
46 | 蒕	蒀
47 | 蔥	葱
48 | 蔿	蒍
49 | 蘊	藴
50 | 蛻	蜕
51 | 衆	眾
52 | 衛	衞
53 | 覈	核
54 | 說	説
55 | 踊	踴
56 | 轀	輼
57 | 醞	醖
58 | 鉢	缽
59 | 鉤	鈎
60 | 銳	鋭
61 | 鍼	針
62 | 閱	閲
63 | 鰮	鰛
64 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/HKVariantsPhrases.txt:
--------------------------------------------------------------------------------
 1 | 南涌	南涌
 2 | 大欖涌	大欖涌
 3 | 大涌	大涌
 4 | 東涌	東涌
 5 | 沙河涌	沙河涌
 6 | 沙魚涌	沙魚涌
 7 | 河涌	河涌
 8 | 泥涌	泥涌
 9 | 涌尾	涌尾
10 | 深涌	深涌
11 | 溪涌	溪涌
12 | 葵涌	葵涌
13 | 蠔涌	蠔涌
14 | 西涌	西涌
15 | 鰂魚涌	鰂魚涌
16 | 麻涌	麻涌
17 | 黎涌	黎涌
18 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/HKVariantsRevPhrases.txt:
--------------------------------------------------------------------------------
  1 | 一口吃個	一口喫個
  2 | 一口吃成	一口喫成
  3 | 一家三口	一家三口
  4 | 一家五口	一家五口
  5 | 一家六口	一家六口
  6 | 一家四口	一家四口
  7 | 七星巖	七星巖
  8 | 世胄	世胄
  9 | 介胄	介冑
 10 | 傅巖	傅巖
 11 | 免胄	免冑
 12 | 冠胄	冠冑
 13 | 千巖競秀	千巖競秀
 14 | 千巖萬壑	千巖萬壑
 15 | 千巖萬谷	千巖萬谷
 16 | 口吃	口吃
 17 | 台山	台山
 18 | 台州	台州
 19 | 台州地區	台州地區
 20 | 台州市	台州市
 21 | 吃口	喫口 吃口
 22 | 吃口令	吃口令
 23 | 吃口飯	喫口飯
 24 | 吃吃	喫喫 吃吃
 25 | 吃子	喫子 吃子
 26 | 名胄	名胄
 27 | 國胄	國胄
 28 | 圍巖	圍巖
 29 | 地胄	地胄
 30 | 壓胄子	壓冑子
 31 | 士胄	士胄
 32 | 大巖桐	大巖桐
 33 | 天台女	天台女
 34 | 天台宗	天台宗
 35 | 天台山	天台山
 36 | 天台縣	天台縣
 37 | 天潢貴胄	天潢貴胄
 38 | 奇巖	奇巖
 39 | 寶胄	寶胄
 40 | 小巖洞	小巖洞
 41 | 岫巖縣	岫巖縣
 42 | 峯巖	峯巖
 43 | 嵌巖	嵌巖
 44 | 巉巖	巉巖
 45 | 巖壁	巖壁
 46 | 巖居	巖居
 47 | 巖居穴處	巖居穴處
 48 | 巖居谷飲	巖居谷飲
 49 | 巖岸	巖岸
 50 | 巖巉	巖巉
 51 | 巖巖	巖巖
 52 | 巖徼	巖徼
 53 | 巖手縣	巖手縣
 54 | 巖村	巖村
 55 | 巖洞	巖洞
 56 | 巖流圈	巖流圈
 57 | 巖牆	巖牆
 58 | 巖牆之下	巖牆之下
 59 | 巖畫	巖畫
 60 | 巖穴	巖穴
 61 | 巖穴之士	巖穴之士
 62 | 巖薔薇	巖薔薇
 63 | 巖邑	巖邑
 64 | 巖郎	巖郎
 65 | 巖阻	巖阻
 66 | 巖陛	巖陛
 67 | 帝胄	帝胄
 68 | 幽巖	幽巖
 69 | 幽棲巖谷	幽棲巖谷
 70 | 張口	張口
 71 | 懸巖	懸巖
 72 | 懸巖峭壁	懸巖峭壁
 73 | 懸胄	懸冑
 74 | 攀巖	攀巖
 75 | 支胄	支胄
 76 | 教胄	教胄
 77 | 景胄	景胄
 78 | 望胄	望胄
 79 | 末胄	末胄
 80 | 村胄	村胄
 81 | 枕巖漱流	枕巖漱流
 82 | 枝胄	枝胄
 83 | 氏胄	氏胄
 84 | 洪胄	洪胄
 85 | 浙江天台縣	浙江天台縣
 86 | 清胄	清胄
 87 | 灰巖殘丘	灰巖殘丘
 88 | 玄胄	玄胄
 89 | 甲胄	甲冑
 90 | 甲胄魚類	甲冑魚類
 91 | 皇胄	皇胄
 92 | 石灰巖洞	石灰巖洞
 93 | 神胄	神胄
 94 | 簪纓世胄	簪纓世胄
 95 | 系胄	系胄
 96 | 紅巖	紅巖
 97 | 絕巖	絕巖
 98 | 緒胄	緒胄
 99 | 纂胄	纂胄
100 | 胃口	胃口
101 | 胄嗣	胄嗣
102 | 胄子	胄子
103 | 胄序	胄序
104 | 胄族	胄族
105 | 胄甲	冑甲
106 | 胄監	胄監
107 | 胄科	冑科
108 | 胄緒	胄緒
109 | 胄胤	胄胤
110 | 胄裔	胄裔
111 | 胄裔繁衍	胄裔繁衍
112 | 胄閥	胄閥
113 | 胡雪巖	胡雪巖
114 | 胤胄	胤胄
115 | 苗胄	苗胄
116 | 英胄	英胄
117 | 華胄	華胄
118 | 血胄	血胄
119 | 裔胄	裔胄
120 | 訓胄	訓胄
121 | 試胄	試胄
122 | 豪門貴胄	豪門貴胄
123 | 貝胄	貝冑
124 | 貴胄	貴胄
125 | 賢胄	賢胄
126 | 蹇吃	蹇吃
127 | 躬擐甲胄	躬擐甲冑
128 | 遐胄	遐胄
129 | 遙胄	遙胄
130 | 遙遙華胄	遙遙華胄
131 | 遠胄	遠胄
132 | 遺胄	遺胄
133 | 鄧艾吃	鄧艾吃
134 | 重巖疊嶂	重巖疊嶂
135 | 金胄	金胄
136 | 鎧胄	鎧冑
137 | 鑿巖	鑿巖
138 | 門胄	門胄
139 | 開口	開口
140 | 雲巖區	雲巖區
141 | 非層巖	非層巖
142 | 韓侂胄	韓侂冑
143 | 飮胄	飮冑
144 | 骨巖巖	骨巖巖
145 | 高胄	高胄
146 | 魚胄	魚冑
147 | 鮮胄	鮮胄
148 | 鴻胄	鴻胄
149 | 黃巖區	黃巖區
150 | 黃巖島	黃巖島
151 | 黃炎貴胄	黃炎貴胄
152 | 齒胄	齒胄
153 | 龍巖	龍巖
154 | 龍巖市	龍巖市
155 | 龍巖村	龍巖村
156 | 龍胄	龍胄
157 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/JPShinjitaiCharacters.txt:
--------------------------------------------------------------------------------
1 | 両	兩 輛
2 | 弁	辨 辯 瓣 辦 弁
3 | 御	御 禦
4 | 欠	缺 欠
5 | 糸	絲 糸
6 | 芸	藝 芸
7 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/JPShinjitaiPhrases.txt:
--------------------------------------------------------------------------------
  1 | 一獲千金	一攫千金
  2 | 丁寧	叮嚀
  3 | 丁重	鄭重
  4 | 三差路	三叉路
  5 | 世論	輿論
  6 | 亜鈴	啞鈴
  7 | 交差	交叉
  8 | 供宴	饗宴
  9 | 俊馬	駿馬
 10 | 保塁	堡壘
 11 | 個条書	箇条書
 12 | 偏平	扁平
 13 | 停泊	碇泊
 14 | 優俊	優駿
 15 | 先兵	尖兵
 16 | 先鋭	尖鋭
 17 | 共役	共軛
 18 | 冗舌	饒舌
 19 | 凶器	兇器
 20 | 削岩	鑿岩
 21 | 包丁	庖丁
 22 | 包帯	繃帯
 23 | 区画	區劃
 24 | 厳然	儼然
 25 | 友宜	友誼
 26 | 反乱	叛乱
 27 | 収集	蒐集
 28 | 叙情	抒情
 29 | 台頭	擡頭
 30 | 合弁	合辦
 31 | 喜遊曲	嬉遊曲
 32 | 嘆願	歎願
 33 | 回転	廻転
 34 | 回遊	回游
 35 | 奉持	捧持
 36 | 委縮	萎縮
 37 | 展転	輾轉
 38 | 希少	稀少
 39 | 幻惑	眩惑
 40 | 広範	廣汎
 41 | 広野	曠野
 42 | 廃虚	廢墟
 43 | 建坪率	建蔽率
 44 | 弁当	辨當
 45 | 弁膜	瓣膜
 46 | 弁護	辯護
 47 | 弁髪	辮髮
 48 | 弦歌	絃歌
 49 | 恩義	恩誼
 50 | 意向	意嚮
 51 | 慰謝料	慰藉料
 52 | 憶断	臆断
 53 | 憶病	臆病
 54 | 戦没	戰歿
 55 | 扇情	煽情
 56 | 手帳	手帖
 57 | 技量	伎倆
 58 | 抜粋	抜萃
 59 | 披歴	披瀝
 60 | 抵触	牴触
 61 | 抽選	抽籤
 62 | 拘引	勾引
 63 | 拠出	醵出
 64 | 拠金	醵金
 65 | 掘削	掘鑿
 66 | 控除	扣除
 67 | 援護	掩護
 68 | 放棄	抛棄
 69 | 散水	撒水
 70 | 敬謙	敬虔
 71 | 敷延	敷衍
 72 | 断固	断乎
 73 | 族生	簇生
 74 | 昇叙	陞敘
 75 | 暖房	煖房
 76 | 暗唱	暗誦
 77 | 暗夜	闇夜
 78 | 暴露	曝露
 79 | 枯渇	涸渇
 80 | 格好	恰好
 81 | 格幅	恰幅
 82 | 棄損	毀損
 83 | 模索	摸索
 84 | 橋頭保	橋頭堡
 85 | 欠缺	欠缺
 86 | 死体	屍體
 87 | 殿部	臀部
 88 | 母指	拇指
 89 | 気迫	気魄
 90 | 決別	訣別
 91 | 決壊	決潰
 92 | 沈殿	沈澱
 93 | 油送船	油槽船
 94 | 波乱	波瀾
 95 | 注釈	註釋
 96 | 洗浄	洗滌 洗浄
 97 | 活発	活潑
 98 | 浸透	滲透
 99 | 浸食	浸蝕
100 | 消却	銷卻
101 | 混然	渾然
102 | 湾曲	彎曲
103 | 溶接	熔接
104 | 漁労	漁撈
105 | 漂然	飄然
106 | 激高	激昂
107 | 火炎	火焰
108 | 焦燥	焦躁
109 | 班点	斑点
110 | 留飲	溜飲
111 | 略奪	掠奪
112 | 疎通	疏通
113 | 発酵	醱酵
114 | 白亜	白堊
115 | 相克	相剋
116 | 知恵	智慧
117 | 破棄	破毀
118 | 確固	確乎
119 | 禁固	禁錮
120 | 符丁	符牒
121 | 粉装	扮装
122 | 紫班	紫斑
123 | 終息	終熄
124 | 総合	綜合
125 | 編集	編輯
126 | 義援	義捐
127 | 耕運機	耕耘機
128 | 肝心	肝腎
129 | 肩甲骨	肩胛骨
130 | 背徳	悖德
131 | 脈拍	脈搏
132 | 膨張	膨脹
133 | 芳純	芳醇
134 | 英知	叡智
135 | 蒸留	蒸溜
136 | 薫蒸	燻蒸
137 | 薫製	燻製
138 | 衣装	衣裳
139 | 衰退	衰退 衰頽
140 | 裕然	悠然
141 | 補佐	輔佐
142 | 訓戒	訓誡
143 | 試練	試煉
144 | 詭弁	詭辯
145 | 講和	媾和
146 | 象眼	象嵌
147 | 貫録	貫禄
148 | 買弁	買辦
149 | 賛辞	讚辭
150 | 踏襲	蹈襲
151 | 車両	車輛
152 | 転倒	顛倒
153 | 輪郭	輪廓
154 | 退色	褪色
155 | 途絶	杜絶
156 | 連係	連繫
157 | 連合	聯合
158 | 選考	銓衡
159 | 酢酸	醋酸
160 | 野卑	野鄙
161 | 鉱石	礦石
162 | 間欠	間歇
163 | 関数	函數
164 | 防御	防禦
165 | 険阻	嶮岨
166 | 障壁	牆壁
167 | 障害	障礙
168 | 隠滅	湮滅
169 | 集落	聚落
170 | 雇用	雇傭
171 | 風諭	諷喩
172 | 飛語	蜚語
173 | 香典	香奠
174 | 骨格	骨骼
175 | 高進	亢進
176 | 鳥観	鳥瞰
177 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/STPhrases_Ext.txt:
--------------------------------------------------------------------------------
 1 | 干锅鸡	幹鍋雞
 2 | 干炒牛河	乾炒牛河
 3 | 松脆饼干	鬆脆餅乾
 4 | 干李子	乾李子
 5 | 干皮症	乾皮症
 6 | 不干燥	不乾燥
 7 | 数个	數箇
 8 | 多个	多箇
 9 | 一个	一箇
10 | 计算	計算
11 | 师范大学	師範大學


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/TSPhrases_Ext.txt:
--------------------------------------------------------------------------------
1 | 乾清宫	乾清宫


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/TWPhrasesName.txt:
--------------------------------------------------------------------------------
 1 | 乍得	查德
 2 | 也門	葉門
 3 | 仙童半導體	快捷半導體
 4 | 伯利茲	貝里斯
 5 | 佛得角	維德角
 6 | 傅里葉	傅立葉
 7 | 克羅地亞	克羅埃西亞
 8 | 列支敦士登	列支敦斯登
 9 | 利比里亞	賴比瑞亞
10 | 加納	迦納
11 | 加蓬	加彭
12 | 博茨瓦納	波札那
13 | 卡塔爾	卡達
14 | 危地馬拉	瓜地馬拉
15 | 厄瓜多爾	厄瓜多
16 | 厄立特里亞	厄利垂亞
17 | 吉布堤	吉布地
18 | 哈薩克斯坦	哈薩克
19 | 哥斯達黎加	哥斯大黎加
20 | 喫茶小舖	喫茶小舖
21 | 圖瓦盧	吐瓦魯
22 | 土庫曼斯坦	土庫曼
23 | 圭亞那	蓋亞那
24 | 坦桑尼亞	坦尚尼亞
25 | 埃塞俄比亞	衣索比亞
26 | 基里巴斯	吉里巴斯
27 | 塔吉克斯坦	塔吉克
28 | 塞拉利昂	獅子山
29 | 塞浦路斯	塞普勒斯
30 | 塞舌爾	塞席爾
31 | 多米尼加	多明尼加
32 | 安提瓜和巴布達	安地卡及巴布達
33 | 尼日利亞	奈及利亞
34 | 尼日爾	尼日
35 | 岡比亞	甘比亞
36 | 巴巴多斯	巴貝多
37 | 巴布亞新幾內亞	巴布亞紐幾內亞
38 | 布基納法索	布吉納法索
39 | 布隆迪	蒲隆地
40 | 帕勞	帛琉
41 | 幾內亞比紹	幾內亞比索
42 | 意大利	義大利
43 | 所羅門羣島	索羅門羣島
44 | 文萊	汶萊
45 | 斯威士蘭	史瓦濟蘭
46 | 斯洛文尼亞	斯洛維尼亞
47 | 新西蘭	紐西蘭
48 | 格林納達	格瑞那達
49 | 格魯吉亞	喬治亞
50 | 歐拉	尤拉
51 | 毛里塔尼亞	茅利塔尼亞
52 | 毛里求斯	模里西斯
53 | 沙特阿拉伯	沙烏地阿拉伯
54 | 波斯尼亞黑塞哥維那	波士尼亞赫塞哥維納
55 | 津巴布韋	辛巴威
56 | 洪都拉斯	宏都拉斯
57 | 溫納圖萬	那杜
58 | 烏茲別克斯坦	烏茲別克
59 | 特立尼達和多巴哥	千里達及托巴哥
60 | 瑙魯	諾魯
61 | 瓦努阿圖	萬那杜
62 | 盧旺達	盧安達
63 | 科摩羅	葛摩
64 | 科特迪瓦	象牙海岸
65 | 突尼斯	突尼西亞
66 | 純喫茶	純喫茶
67 | 索馬里	索馬利亞
68 | 老撾	寮國
69 | 聖基茨和尼維斯	聖克里斯多福及尼維斯
70 | 聖文森特和格林納丁斯	聖文森及格瑞那丁
71 | 聖盧西亞	聖露西亞
72 | 聖馬力諾	聖馬利諾
73 | 肯尼亞	肯亞
74 | 莫桑比克	莫三比克
75 | 萊索托	賴索托
76 | 萬象	永珍
77 | 蘇里南	蘇利南
78 | 貝寧	貝南
79 | 贊比亞	尚比亞
80 | 阿塞拜疆	亞塞拜然
81 | 阿拉伯聯合酋長國	阿拉伯聯合大公國
82 | 香農	夏農
83 | 馬爾代夫	馬爾地夫
84 | 馬里共和國	馬利共和國
85 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/TWPhrasesOther.txt:
--------------------------------------------------------------------------------
 1 | 元音	母音
 2 | 冰棍	冰棒
 3 | 出租車	計程車
 4 | 咖喱	咖哩
 5 | 塑料	塑膠
 6 | 奔馳	賓士
 7 | 奶酪	乳酪
 8 | 幾率	機率
 9 | 方便麪	泡麵 速食麵
10 | 李彥宏	李彥宏
11 | 概率	機率
12 | 海內存知己	海內存知己
13 | 涼菜	冷盤
14 | 的士	計程車
15 | 砹	砈
16 | 硅	矽
17 | 程序不正義	程序不正義
18 | 程序正義	程序正義
19 | 空氣淨化器	空氣清淨機
20 | 納米	奈米
21 | 自行車	腳踏車
22 | 詞組	片語
23 | 蹦極	高空彈跳
24 | 輔音	子音
25 | 通過	透過 通過
26 | 酰	醯
27 | 鈁	鍅
28 | 鈈	鈽
29 | 錇	鉳
30 | 鍀	鎝
31 | 鎄	鑀
32 | 鎇	鋂
33 | 鎿	錼
34 | 鐦	鉲
35 | 鑥	鎦
36 | 黃宏	黃宏
37 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/TWVariants.txt:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 啓	啟
 3 | 喫	吃
 4 | 嫺	嫻
 5 | 嬀	媯
 6 | 峯	峰
 7 | 幺	么
 8 | 擡	抬
 9 | 棱	稜
10 | 檐	簷
11 | 污	汙
12 | 泄	洩
13 | 潙	溈
14 | 潨	潀
15 | 爲	為
16 | 牀	床
17 | 痹	痺
18 | 癡	痴
19 | 皁	皂
20 | 着	著
21 | 睾	睪
22 | 祕	秘
23 | 竈	灶
24 | 糉	粽
25 | 繮	韁
26 | 纔	才
27 | 羣	群
28 | 脣	唇
29 | 蔘	參
30 | 蔿	蒍
31 | 衆	眾
32 | 裏	裡
33 | 覈	核
34 | 踊	踴
35 | 鉢	缽
36 | 鍼	針
37 | 鮎	鯰
38 | 麪	麵
39 | 齶	顎
40 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/TWVariantsRevPhrases.txt:
--------------------------------------------------------------------------------
 1 | 一口吃個	一口喫個
 2 | 一口吃成	一口喫成
 3 | 一家三口	一家三口
 4 | 一家五口	一家五口
 5 | 一家六口	一家六口
 6 | 一家四口	一家四口
 7 | 凶事	凶事
 8 | 凶信	凶信
 9 | 凶兆	凶兆
10 | 凶吉	凶吉
11 | 凶地	凶地
12 | 凶多吉少	凶多吉少
13 | 凶宅	凶宅
14 | 凶年	凶年
15 | 凶德	凶德
16 | 凶怪	凶怪
17 | 凶日	凶日
18 | 凶服	凶服
19 | 凶歲	凶歲
20 | 凶死	凶死
21 | 凶氣	凶氣
22 | 凶煞	凶煞
23 | 凶燄	凶燄
24 | 凶神	凶神
25 | 凶禮	凶禮
26 | 凶耗	凶耗
27 | 凶肆	凶肆
28 | 凶荒	凶荒
29 | 凶訊	凶訊
30 | 凶豎	凶豎
31 | 凶身	凶身
32 | 凶逆	凶逆
33 | 凶門	凶門
34 | 口吃	口吃
35 | 吃口	喫口 吃口
36 | 吃口令	吃口令
37 | 吃口飯	喫口飯
38 | 吃吃	喫喫 吃吃
39 | 吃子	喫子 吃子
40 | 合著	合著
41 | 吉凶	吉凶
42 | 名著	名著
43 | 四凶	四凶
44 | 大凶	大凶
45 | 巨著	巨著
46 | 張口	張口
47 | 昭著	昭著
48 | 歲凶	歲凶
49 | 胃口	胃口
50 | 著作	著作
51 | 著名	著名
52 | 著式	著式
53 | 著志	著志
54 | 著於	著於
55 | 著書	著書
56 | 著白	著白
57 | 著稱	著稱
58 | 著者	著者
59 | 著述	著述
60 | 著錄	著錄
61 | 蹇吃	蹇吃
62 | 逢凶	逢凶
63 | 避凶	避凶
64 | 鄧艾吃	鄧艾吃
65 | 鉅著	鉅著
66 | 開口	開口
67 | 閔凶	閔凶
68 | 顯著	顯著
69 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.ReferenceHelper/dict/pinyinSrc/_wordRevise.txt:
--------------------------------------------------------------------------------
1 | 秘鲁,bì,lǔ
2 | 第比利斯,dì,bǐ,lì,sī
3 | 天行,tiān,xíng


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/PinYin/PinYinTest.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | using PetaTest;
 6 | using ToolGood.Words;
 7 | 
 8 | namespace ToolGood.Words.Test.Pinyin
 9 | {
10 |     [TestFixture]
11 |     public class PinyinTest
12 |     {
13 |         [Test]
14 |         public void GetPinyin()
15 |         {
16 |             var list = WordsHelper.GetAllPinyin('㘄');
17 |             list = WordsHelper.GetAllPinyin('䉄');
18 |             list = WordsHelper.GetAllPinyin('䬋');
19 |             list = WordsHelper.GetAllPinyin('䮚');
20 |             list = WordsHelper.GetAllPinyin('䚏');
21 |             list = WordsHelper.GetAllPinyin('㭁');
22 |             list = WordsHelper.GetAllPinyin('䖆');
23 | 
24 |             var list2 = WordsHelper.GetPinyin("𠀀");
25 |             var list3 = WordsHelper.GetPinyin("𫠝");
26 |             //var start = "𠀀";// '\ud840' '\udc00' - '\udfff'  
27 |             //var end = "𫠝";// '\ud86e' '\udc1d'
28 | 
29 |             var t = "三个金念鑫,三个水念淼,三个火念焱, 三个土念垚,三个牛念犇,三个手念掱,三个目念瞐,三个田念畾,三个马念骉,三个羊念羴,三个犬念猋,三个鹿念麤,三个鱼念鱻,三个贝念赑,三个力念劦,三个毛念毳,三个耳念聶,三个车念轟,三个直念矗,三个龙念龘,三个原念厵,三个雷念靐,三个飞念飝,三个刀念刕,三个又念叒,三个士念壵,三个小念尛,三个子念孨,三个止念歮,三个风念飍,三个隼念雥,三个吉念嚞,三个言念譶,三个舌念舙,三个香念馫,三个泉念灥,三个心念惢,三个白念皛";
30 |             var pys = ToolGood.Words.WordsHelper.GetPinyin(t);
31 | 
32 |             var s = WordsHelper.GetPinyin("什么");
33 | 
34 | 
35 | 
36 |         }
37 | 
38 | 
39 |     }
40 | }
41 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/Program.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace ToolGood.Words.Test
 7 | {
 8 |     class Program
 9 |     {
10 |         static void Main(string[] args)
11 |         {
12 |             var stopwatch = System.Diagnostics.Stopwatch.StartNew();
13 |             var r = WordsHelper.GetPinyin("我爱中国");
14 |             stopwatch.Stop();
15 |             var s = stopwatch.ElapsedMilliseconds;
16 | 
17 |             Console.WriteLine("拼音第一次加载用时(ms):"+s);
18 | 
19 |             PetaTest.Runner.RunMain(args);
20 |         }
21 |     }
22 | }
23 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/StringSearchTest/StringSearchEx2Test.cs:
--------------------------------------------------------------------------------
 1 | using PetaTest;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     public class StringSearchEx2Test
11 |     {
12 |         [Test]
13 |         public void test3()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             StringSearchEx2 iwords = new StringSearchEx2();
19 |             iwords.SetKeywords(s.Split('|').ToList());
20 | 
21 |             var b = iwords.ContainsAny(test);
22 |             Assert.AreEqual(true, b);
23 | 
24 | 
25 |             var f = iwords.FindFirst(test);
26 |             Assert.AreEqual("中国", f);
27 | 
28 | 
29 | 
30 |             var all = iwords.FindAll(test);
31 |             Assert.AreEqual("中国", all[0]);
32 |             Assert.AreEqual("国人", all[1]);
33 |             Assert.AreEqual(2, all.Count);
34 | 
35 |             var str = iwords.Replace(test, '*');
36 |             Assert.AreEqual("我是***", str);
37 | 
38 | 
39 |         }
40 |         [Test]
41 |         public void test4()
42 |         {
43 |             string s = "中国人|中国|国人|zg人|我是中国人|我是中国|是中国人";
44 |             string test = "我是中国人";
45 | 
46 |             StringSearchEx2 iwords = new StringSearchEx2();
47 |             iwords.SetKeywords(s.Split('|').ToList());
48 | 
49 | 
50 | 
51 |             var all = iwords.FindAll(test);
52 | 
53 |             Assert.AreEqual(6, all.Count);
54 | 
55 |             var str = iwords.Replace(test, '*');
56 |             Assert.AreEqual("*****", str);
57 | 
58 | 
59 |         }
60 |     }
61 | }
62 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/StringSearchTest/StringSearchEx3Test.cs:
--------------------------------------------------------------------------------
 1 | using PetaTest;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     public class StringSearchEx3Test
11 |     {
12 |         [Test]
13 |         public void test5()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             StringSearchEx3 iwords2 = new StringSearchEx3();
19 |             iwords2.SetKeywords(s.Split('|'));
20 |             iwords2.Save("StringSearchEx2Test.dat");
21 | 
22 |             StringSearchEx3 iwords = new StringSearchEx3();
23 |             iwords.Load("StringSearchEx2Test.dat");
24 | 
25 | 
26 |             var b = iwords.ContainsAny(test);
27 |             Assert.AreEqual(true, b);
28 | 
29 | 
30 |             var f = iwords.FindFirst(test);
31 |             Assert.AreEqual("中国", f);
32 | 
33 | 
34 | 
35 |             var all = iwords.FindAll(test);
36 |             Assert.AreEqual("中国", all[0]);
37 |             Assert.AreEqual("国人", all[1]);
38 |             Assert.AreEqual(2, all.Count);
39 | 
40 |             var str = iwords.Replace(test, '*');
41 |             Assert.AreEqual("我是***", str);
42 | 
43 | 
44 |         }
45 |     }
46 | }
47 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/StringSearchTest/StringSearchExTest.cs:
--------------------------------------------------------------------------------
 1 | using PetaTest;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     public class StringSearchExTest
11 |     {
12 |         [Test]
13 |         public void test()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             StringSearchEx iwords2 = new StringSearchEx();
19 |             iwords2.SetKeywords(s.Split('|'));
20 |             iwords2.Save("BigStringSearchEx.dat");
21 | 
22 |             StringSearchEx iwords = new StringSearchEx();
23 |             iwords.Load("BigStringSearchEx.dat");
24 | 
25 |             var b = iwords.ContainsAny(test);
26 |             Assert.AreEqual(true, b);
27 | 
28 | 
29 |             var f = iwords.FindFirst(test);
30 |             Assert.AreEqual("中国", f);
31 | 
32 | 
33 | 
34 |             var all = iwords.FindAll(test);
35 |             Assert.AreEqual("中国", all[0]);
36 |             Assert.AreEqual("国人", all[1]);
37 |             Assert.AreEqual(2, all.Count);
38 | 
39 |             var str = iwords.Replace(test, '*');
40 |             Assert.AreEqual("我是***", str);
41 | 
42 | 
43 |             string s2 = "ABCDEFG|BCDEF|BCDEG|CDEK|CDE";
44 |             StringSearch stringSearch = new StringSearch();
45 |             stringSearch.SetKeywords(s2.Split('|'));
46 |             all = stringSearch.FindAll("AAAAAABCDEKDE");
47 |             Assert.AreEqual("CDE", all[0]);
48 |             Assert.AreEqual("CDEK", all[1]);
49 |             Assert.AreEqual(2, all.Count);
50 | 
51 |         }
52 |         [Test]
53 |         public void test2()
54 |         {
55 |             string s = "中国人|中国|国人|zg人|我是中国人|我是中国|是中国人";
56 |             string test = "我是中国人";
57 | 
58 |             StringSearchEx iwords = new StringSearchEx();
59 |             iwords.SetKeywords(s.Split('|'));
60 | 
61 | 
62 | 
63 |             var all = iwords.FindAll(test);
64 | 
65 |             Assert.AreEqual(6, all.Count);
66 | 
67 |             var str = iwords.Replace(test, '*');
68 |             Assert.AreEqual("*****", str);
69 | 
70 | 
71 |         }
72 | 
73 |     }
74 | }
75 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/StringSearchTest/StringSearchTest.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | using PetaTest;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     class StringSearchTest
11 |     {
12 |         [Test]
13 |         public void test()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             StringSearch iwords = new StringSearch();
19 |             iwords.SetKeywords(s.Split('|'));
20 | 
21 |             var b = iwords.ContainsAny(test);
22 |             Assert.AreEqual(true, b);
23 | 
24 | 
25 |             var f = iwords.FindFirst(test);
26 |             Assert.AreEqual("中国", f);
27 | 
28 | 
29 | 
30 |             var all = iwords.FindAll(test);
31 |             Assert.AreEqual("中国", all[0]);
32 |             Assert.AreEqual("国人", all[1]);
33 |             Assert.AreEqual(2, all.Count);
34 | 
35 |             var str = iwords.Replace(test, '*');
36 |             Assert.AreEqual("我是***", str);
37 | 
38 | 
39 |             string s2 = "ABCDEFG|BCDEF|BCDEG|CDEK|CDE";
40 |             StringSearch stringSearch = new StringSearch();
41 |             stringSearch.SetKeywords(s2.Split('|'));
42 |             all = stringSearch.FindAll("AAAAAABCDEKDE");
43 |             Assert.AreEqual("CDE", all[0]);
44 |             Assert.AreEqual("CDEK", all[1]);
45 |             Assert.AreEqual(2, all.Count);
46 | 
47 |         }
48 |         [Test]
49 |         public void test2()
50 |         {
51 |             string s = "中国人|中国|国人|zg人|我是中国人|我是中国|是中国人";
52 |             string test = "我是中国人";
53 | 
54 |             StringSearch iwords = new StringSearch();
55 |             iwords.SetKeywords(s.Split('|'));
56 | 
57 | 
58 | 
59 |             var all = iwords.FindAll(test);
60 | 
61 |             Assert.AreEqual(6, all.Count);
62 | 
63 |             var str = iwords.Replace(test, '*');
64 |             Assert.AreEqual("*****", str);
65 | 
66 | 
67 |         }
68 | 
69 |    
70 | 
71 | 
72 | 
73 |     }
74 | }
75 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/TextMatchTest/StringMatchTest.cs:
--------------------------------------------------------------------------------
  1 | using PetaTest;
  2 | using System;
  3 | using System.Collections.Generic;
  4 | using System.Linq;
  5 | using System.Text;
  6 | 
  7 | namespace ToolGood.Words.Test
  8 | {
  9 |     [TestFixture]
 10 |     public class StringMatchTest
 11 |     {
 12 |         [Test]
 13 |         public void test()
 14 |         {
 15 |             string s = "aaaaa|BBBB|CCCC|中国|国人|zg人";
 16 |             string test = "我是中国人";
 17 | 
 18 |             StringMatch iwords = new StringMatch();
 19 |             iwords.SetKeywords(s.Split('|'));
 20 | 
 21 |             var b = iwords.ContainsAny(test);
 22 |             Assert.AreEqual(true, b);
 23 | 
 24 | 
 25 |             var f = iwords.FindFirst(test);
 26 |             Assert.AreEqual("中国", f);
 27 | 
 28 | 
 29 | 
 30 |             var all = iwords.FindAll(test);
 31 |             Assert.AreEqual("中国", all[0]);
 32 |             Assert.AreEqual("国人", all[1]);
 33 |             Assert.AreEqual(2, all.Count);
 34 | 
 35 |             var str = iwords.Replace(test, '*');
 36 |             Assert.AreEqual("我是***", str);
 37 | 
 38 | 
 39 |             string s2 = "ABCDEFG|BCDEF|BCDEG|CDEK|CDE";
 40 |             StringSearch stringSearch = new StringSearch();
 41 |             stringSearch.SetKeywords(s2.Split('|'));
 42 |             all = stringSearch.FindAll("AAAAAABCDEKDE");
 43 |             Assert.AreEqual("CDE", all[0]);
 44 |             Assert.AreEqual("CDEK", all[1]);
 45 |             Assert.AreEqual(2, all.Count);
 46 | 
 47 |         }
 48 |         [Test]
 49 |         public void test2()
 50 |         {
 51 |             string s = "中国人|中国|国人|zg人|我是中国人|我是中国|是中国人";
 52 |             string test = "我是中国人";
 53 | 
 54 |             StringMatch iwords = new StringMatch();
 55 |             iwords.SetKeywords(s.Split('|'));
 56 | 
 57 | 
 58 |             var all = iwords.FindAll(test);
 59 | 
 60 |             Assert.AreEqual(6, all.Count);
 61 | 
 62 |             var str = iwords.Replace(test, '*');
 63 |             Assert.AreEqual("*****", str);
 64 |         }
 65 |         [Test]
 66 |         public void test3()
 67 |         {
 68 |             string s = ".中国|国人|zg人";
 69 |             string test = "我是中国人";
 70 | 
 71 |             StringMatch iwords = new StringMatch();
 72 |             iwords.SetKeywords(s.Split('|'));
 73 | 
 74 |             var b = iwords.ContainsAny(test);
 75 |             Assert.AreEqual(true, b);
 76 | 
 77 | 
 78 |             var f = iwords.FindFirst(test);
 79 |             Assert.AreEqual("是中国", f);
 80 | 
 81 | 
 82 | 
 83 |             var all = iwords.FindAll(test);
 84 |             Assert.AreEqual("是中国", all[0]);
 85 |             Assert.AreEqual("国人", all[1]);
 86 |             Assert.AreEqual(2, all.Count);
 87 | 
 88 |             var str = iwords.Replace(test, '*');
 89 |             Assert.AreEqual("我****", str);
 90 |         }
 91 | 
 92 | 
 93 |         [Test]
 94 |         public void test4()
 95 |         {
 96 |             string s = "[ab][cd]";
 97 |             string test = "kac";
 98 | 
 99 |             StringMatch iwords = new StringMatch();
100 |             iwords.SetKeywords(s.Split('|'));
101 | 
102 | 
103 | 
104 |             var f = iwords.FindFirst(test);
105 |             Assert.AreEqual("ac", f);
106 | 
107 |             f = iwords.FindFirst("ad");
108 |             Assert.AreEqual("ad", f);
109 | 
110 |             f = iwords.FindFirst("bc");
111 |             Assert.AreEqual("bc", f);
112 | 
113 |             f = iwords.FindFirst("bd");
114 |             Assert.AreEqual("bd", f);
115 | 
116 |         }
117 | 
118 | 
119 |     }
120 | }
121 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/TypoConverter/TypoConverterTest.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | using PetaTest;
 6 | 
 7 | namespace ToolGood.Words.Test.TypoConverter
 8 | {
 9 |     [TestFixture]
10 |     public class TypoConverterTest
11 |     {
12 | 
13 | 
14 | 
15 | 
16 |     }
17 | }
18 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/WordsSearchTest/WordsSearchEx2Test.cs:
--------------------------------------------------------------------------------
 1 | using PetaTest;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     public class WordsSearchEx2Test
11 |     {
12 | 
13 |         [Test]
14 |         public void test2()
15 |         {
16 |             string s = "中国|国人|zg人";
17 |             string test = "我是中国人";
18 | 
19 |             WordsSearchEx2 wordsSearch = new WordsSearchEx2();
20 |             wordsSearch.SetKeywords(s.Split('|').ToList());
21 | 
22 |             var b = wordsSearch.ContainsAny(test);
23 |             Assert.AreEqual(true, b);
24 | 
25 | 
26 |             var f = wordsSearch.FindFirst(test);
27 |             Assert.AreEqual("中国", f.Keyword);
28 | 
29 |             var alls = wordsSearch.FindAll(test);
30 |             Assert.AreEqual("中国", alls[0].Keyword);
31 |             Assert.AreEqual(2, alls[0].Start);
32 |             Assert.AreEqual(3, alls[0].End);
33 |             Assert.AreEqual(0, alls[0].Index);//返回索引Index,默认从0开始
34 |             Assert.AreEqual("国人", alls[1].Keyword);
35 |             Assert.AreEqual(2, alls.Count);
36 | 
37 |             var t = wordsSearch.Replace(test, '*');
38 |             Assert.AreEqual("我是***", t);
39 | 
40 | 
41 |         }
42 | 
43 | 
44 |     }
45 | }
46 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/WordsSearchTest/WordsSearchEx3Test.cs:
--------------------------------------------------------------------------------
 1 | using PetaTest;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     public class WordsSearchEx3Test
11 |     {
12 |         [Test]
13 |         public void test3()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             WordsSearchEx3 wordsSearch = new WordsSearchEx3();
19 |             wordsSearch.SetKeywords(s.Split('|').ToList());
20 | 
21 |             var b = wordsSearch.ContainsAny(test);
22 |             Assert.AreEqual(true, b);
23 | 
24 | 
25 |             var f = wordsSearch.FindFirst(test);
26 |             Assert.AreEqual("中国", f.Keyword);
27 | 
28 |             var alls = wordsSearch.FindAll(test);
29 |             Assert.AreEqual("中国", alls[0].Keyword);
30 |             Assert.AreEqual(2, alls[0].Start);
31 |             Assert.AreEqual(3, alls[0].End);
32 |             Assert.AreEqual(0, alls[0].Index);//返回索引Index,默认从0开始
33 |             Assert.AreEqual("国人", alls[1].Keyword);
34 |             Assert.AreEqual(2, alls.Count);
35 | 
36 |             var t = wordsSearch.Replace(test, '*');
37 |             Assert.AreEqual("我是***", t);
38 | 
39 | 
40 |         }
41 |     }
42 | }
43 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/WordsSearchTest/WordsSearchExTest.cs:
--------------------------------------------------------------------------------
 1 | using PetaTest;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     public class WordsSearchExTest
11 |     {
12 |         [Test]
13 |         public void test()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             WordsSearchEx wordsSearch = new WordsSearchEx();
19 |             wordsSearch.SetKeywords(s.Split('|'));
20 | 
21 |             var b = wordsSearch.ContainsAny(test);
22 |             Assert.AreEqual(true, b);
23 | 
24 | 
25 |             var f = wordsSearch.FindFirst(test);
26 |             Assert.AreEqual("中国", f.Keyword);
27 | 
28 |             var alls = wordsSearch.FindAll(test);
29 |             Assert.AreEqual("中国", alls[0].Keyword);
30 |             Assert.AreEqual(2, alls[0].Start);
31 |             Assert.AreEqual(3, alls[0].End);
32 |             Assert.AreEqual(0, alls[0].Index);//返回索引Index,默认从0开始
33 |             Assert.AreEqual("国人", alls[1].Keyword);
34 |             Assert.AreEqual(2, alls.Count);
35 | 
36 |             var t = wordsSearch.Replace(test, '*');
37 |             Assert.AreEqual("我是***", t);
38 | 
39 | 
40 |         }
41 | 
42 | 
43 |         [Test]
44 |         public void test2()
45 |         {
46 |             string s = "中国|国人|zg人";
47 |             string test = "我是中国人";
48 | 
49 |             WordsSearchEx wordsSearch = new WordsSearchEx();
50 |             wordsSearch.SetKeywords(s.Split('|').ToList());
51 | 
52 |             var b = wordsSearch.ContainsAny(test);
53 |             Assert.AreEqual(true, b);
54 | 
55 | 
56 |             var f = wordsSearch.FindFirst(test);
57 |             Assert.AreEqual("中国", f.Keyword);
58 | 
59 |             var alls = wordsSearch.FindAll(test);
60 |             Assert.AreEqual("中国", alls[0].Keyword);
61 |             Assert.AreEqual(2, alls[0].Start);
62 |             Assert.AreEqual(3, alls[0].End);
63 |             Assert.AreEqual(0, alls[0].Index);//返回索引Index,默认从0开始
64 |             Assert.AreEqual("国人", alls[1].Keyword);
65 |             Assert.AreEqual(2, alls.Count);
66 | 
67 |             var t = wordsSearch.Replace(test, '*');
68 |             Assert.AreEqual("我是***", t);
69 | 
70 | 
71 |         }
72 | 
73 | 
74 |     }
75 | }
76 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/WordsSearchTest/WordsSearchTest.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | using PetaTest;
 6 | 
 7 | namespace ToolGood.Words.Test
 8 | {
 9 |     [TestFixture]
10 |     class WordsSearchTest
11 |     {
12 |         [Test]
13 |         public void test()
14 |         {
15 |             string s = "中国|国人|zg人";
16 |             string test = "我是中国人";
17 | 
18 |             WordsSearch wordsSearch = new WordsSearch();
19 |             wordsSearch.SetKeywords(s.Split('|'));
20 | 
21 |             var b = wordsSearch.ContainsAny(test);
22 |             Assert.AreEqual(true, b);
23 | 
24 | 
25 |             var f = wordsSearch.FindFirst(test);
26 |             Assert.AreEqual("中国", f.Keyword);
27 | 
28 |             var alls = wordsSearch.FindAll(test);
29 |             Assert.AreEqual("中国", alls[0].Keyword);
30 |             Assert.AreEqual(2, alls[0].Start);
31 |             Assert.AreEqual(3, alls[0].End);
32 |             Assert.AreEqual(0, alls[0].Index);//返回索引Index,默认从0开始
33 |             Assert.AreEqual("国人", alls[1].Keyword);
34 |             Assert.AreEqual(2, alls.Count);
35 | 
36 |             var t = wordsSearch.Replace (test,'*');
37 |             Assert.AreEqual("我是***",t);
38 | 
39 | 
40 |         }
41 | 
42 | 
43 | 
44 |        
45 | 
46 |     }
47 | }
48 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/147种水果的名字.txt:
--------------------------------------------------------------------------------
  1 | 巴旦杏
  2 | 白果
  3 | 板栗
  4 | 荸荠
  5 | 槟榔子
  6 | 菠萝
  7 | 菠萝蜜
  8 | 草莓
  9 | 橙
 10 | 橙子
 11 | 醋粟
 12 | 袋装水果
 13 | 砀山梨
 14 | 鳄梨
 15 | 番石榴
 16 | 凤梨
 17 | 覆盆子
 18 | 干果
 19 | 柑桔
 20 | 柑桔皮
 21 | 橄榄
 22 | 干梅子
 23 | 拐枣
 24 | 罐头水果
 25 | 桂圆
 26 | 果肉
 27 | 哈密瓜
 28 | 海棠果
 29 | 呵呵
 30 | 核桃仁
 31 | 黑莓
 32 | 黑樱桃
 33 | 红橙
 34 | 红醋栗
 35 | 胡桃
 36 | 花生
 37 | 火龙果
 38 | 坚果
 39 | 坚果壳
 40 | 坚果仁
 41 | 坚硬
 42 | 金桔
 43 | 橘子
 44 | 可可果
 45 | 烂果
 46 | 梨
 47 | 李杏
 48 | 荔枝
 49 | 荔枝皮
 50 | 李子
 51 | 栗子
 52 | 梨子
 53 | 廉价
 54 | 榴梿
 55 | 绿苹果
 56 | 麦金托什红苹果
 57 | 芒果
 58 | 毛桃
 59 | 美国香瓜
 60 | 弥猴桃
 61 | 木瓜
 62 | 柠檬
 63 | 欧查果
 64 | 蟠桃
 65 | 枇杷
 66 | 苹果
 67 | 苹果核
 68 | 苹果皮
 69 | 苹果汁
 70 | 葡萄
 71 | 葡萄干
 72 | 葡萄皮
 73 | 葡萄柚
 74 | 葡萄汁
 75 | 脐橙
 76 | 奇异果弥猴桃
 77 | 青梅
 78 | 仁
 79 | 肉质果
 80 | 桑椹
 81 | 沙枣
 82 | 山核桃
 83 | 山毛榉坚果
 84 | 山霉
 85 | 山楂
 86 | 山楂果
 87 | 石榴
 88 | 柿子
 89 | 水果
 90 | 水果刀
 91 | 水果商
 92 | 粟子
 93 | 酸橙
 94 | 酸莓
 95 | 桃
 96 | 桃子
 97 | 乌饭果
 98 | 无核桔
 99 | 无核小葡萄
100 | 无花果
101 | 西瓜
102 | 西洋李子
103 | 鲜荔枝
104 | 仙人掌果
105 | 香瓜
106 | 香蕉
107 | 香蕉皮
108 | 新鲜
109 | 杏
110 | 杏核
111 | 杏仁
112 | 杏肉
113 | 杏子
114 | 杨梅
115 | 杨桃
116 | 椰奶
117 | 椰枣
118 | 椰子
119 | 椰子汁
120 | 樱桃
121 | 樱桃肉
122 | 油葵
123 | 油桃
124 | 柚子
125 | 越蔓橘
126 | 枣核
127 | 枣子
128 | 榛子
129 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/世界所有国家及其首都.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/世界所有国家及其首都.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/中医中药大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/中医中药大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/书法词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/书法词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/二人转词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/二人转词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/亲戚称呼.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/亲戚称呼.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/全国省市区县地名.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/全国省市区县地名.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/农业词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/农业词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/冰雪名词.txt:
--------------------------------------------------------------------------------
  1 | 岸冰
  2 | 白霜
  3 | 崩坍
  4 | 边冰
  5 | 冰坝
  6 | 冰崩
  7 | 冰层涌水
  8 | 冰川
  9 | 冰川冰
 10 | 冰川洪水
 11 | 冰川净平衡
 12 | 冰川裂隙
 13 | 冰川平衡线
 14 | 冰川雪
 15 | 冰川学
 16 | 冰的升华
 17 | 冰冻学
 18 | 冰封
 19 | 冰盖
 20 | 冰沟
 21 | 冰谷
 22 | 冰冠
 23 | 冰河时代
 24 | 冰花
 25 | 冰礁
 26 | 冰窟窿
 27 | 冰垒
 28 | 冰粒
 29 | 冰裂
 30 | 冰垅形成
 31 | 冰期
 32 | 冰情阶段
 33 | 冰情预报
 34 | 冰山
 35 | 冰上冰
 36 | 冰丸
 37 | 冰隙
 38 | 冰屑
 39 | 冰穴
 40 | 冰雪圈
 41 | 冰雪水文学
 42 | 饼状冰
 43 | 冰阻
 44 | 薄冰膜
 45 | 波痕
 46 | 波纹
 47 | 测雪板
 48 | 测雪尺
 49 | 测雪垫
 50 | 测雪计
 51 | 测雪路线
 52 | 陈雪
 53 | 吹雪堆
 54 | 导航线
 55 | 等雪深线
 56 | 底冰
 57 | 冻结
 58 | 堆积
 59 | 粉末雪
 60 | 封冰
 61 | 封冻
 62 | 封冻期
 63 | 峰窝冰
 64 | 浮冰群
 65 | 河谷冰川
 66 | 洪泛
 67 | 湖冰
 68 | 脊形冰
 69 | 积雪
 70 | 积雪产水量
 71 | 积雪场
 72 | 积雪调查
 73 | 积雪覆盖层
 74 | 积雪密度
 75 | 积雪水当量
 76 | 挤压冰
 77 | 坚冰
 78 | 降雪
 79 | 降雪量
 80 | 解冰
 81 | 解冻
 82 | 旧雪
 83 | 开冻
 84 | 开河
 85 | 烂冰
 86 | 累积
 87 | 粒雪
 88 | 粒状冰
 89 | 量雪计
 90 | 零星雪堆
 91 | 流冰
 92 | 内陆冰原
 93 | 漂冰
 94 | 起伏冰
 95 | 潜冰
 96 | 取雪管
 97 | 融化
 98 | 融雪
 99 | 融雪洪水
100 | 水坑
101 | 水内冰
102 | 淌冰
103 | 淌凌
104 | 同取雪样器
105 | 万年雪
106 | 完全冻结
107 | 微波
108 | 雾淞
109 | 消融
110 | 屑冰
111 | 新降雪
112 | 新雪
113 | 朽冰
114 | 雪被
115 | 雪崩
116 | 雪冰
117 | 雪尺
118 | 雪堆
119 | 雪覆盖率
120 | 雪盖
121 | 雪花
122 | 雪浆
123 | 雪片
124 | 雪深
125 | 雪水
126 | 雪水当量
127 | 雪线
128 | 页冰
129 | 永久冰雪
130 | 永久积雪
131 | 永久雪界
132 | 圆扁冰
133 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/冶金词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/冶金词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/动物词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/动物词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/化学化工词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/化学化工词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/化学品名.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/化学品名.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/医学词汇大全.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/医学词汇大全.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/医疗器械大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/医疗器械大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/园林花草名称词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/园林花草名称词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/国家和地区词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/国家和地区词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/地名词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/地名词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/地理名词.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/地理名词.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/基础数学用词.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/基础数学用词.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/天文学天体类词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/天文学天体类词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/天文词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/天文词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/家居装修词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/家居装修词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/建筑词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/建筑词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/恒星、银河系词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/恒星、银河系词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/搜狗标准词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/搜狗标准词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/数学词库EXTEND版.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/数学词库EXTEND版.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/数学词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/数学词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/时空类词汇总库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/时空类词汇总库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/最新车型大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/最新车型大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/最详细的全国地名大全.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/最详细的全国地名大全.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/机械词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/机械词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/植物名词大全.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/植物名词大全.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/植物学名词术语.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/植物学名词术语.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/植物词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/植物词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/气象与降水名词.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/气象与降水名词.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/气象词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/气象词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/水利词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/水利词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/法律词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/法律词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/物流词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/物流词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/物理词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/物理词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/生物词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/生物词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/电力词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/电力词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/电子商务专用词库【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/电子商务专用词库【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/电子词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/电子词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/真菌类名词.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/真菌类名词.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/经济生活词汇.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/经济生活词汇.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/美容词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/美容词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/联合国成员国名单.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/联合国成员国名单.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/艺术专用词汇.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/艺术专用词汇.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/花卉名词.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/花卉名词.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/花木名称大全.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/花木名称大全.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/虫蛇类名词.txt:
--------------------------------------------------------------------------------
  1 | 白蜡虫
  2 | 白蚁
  3 | 白蚤
  4 | 孢子虫
  5 | 壁虎
  6 | 鞭虫
  7 | 鞭毛虫
  8 | 变色龙
  9 | 变色蜥蜴
 10 | 变形虫
 11 | 薄翅螳螂
 12 | 菜青虫
 13 | 蚕蛾
 14 | 草履虫
 15 | 臭虫
 16 | 椿象
 17 | 大黄蜂
 18 | 大蟒
 19 | 独居昆虫
 20 | 毒蛇
 21 | 鳄蜥
 22 | 放射虫
 23 | 纺织娘
 24 | 非洲毒蛇
 25 | 粉蝶
 26 | 凤蝶
 27 | 蜂王
 28 | 蝮蛇
 29 | 蜉蝣
 30 | 工蜂
 31 | 钩虫
 32 | 果蝇
 33 | 海蛇
 34 | 寒号虫
 35 | 黑斑蝰
 36 | 红珊瑚
 37 | 红夜蛾
 38 | 虎斑蛾
 39 | 蝴蝶
 40 | 虎甲虫
 41 | 蝗虫
 42 | 黄蜂
 43 | 蛔虫
 44 | 灰鼠蛇
 45 | 甲虫
 46 | 家蝇
 47 | 姜片虫
 48 | 角蝉
 49 | 角蝰
 50 | 结草虫
 51 | 金龟子
 52 | 金环蛇
 53 | 金鱼虫
 54 | 金针虫
 55 | 巨蜥
 56 | 叩头虫
 57 | 蝰蛇
 58 | 昆虫
 59 | 龙虱
 60 | 蝼蛄
 61 | 鹿角锹甲
 62 | 绿头苍蝇
 63 | 蚂蝗
 64 | 蚂蚁
 65 | 马蝇
 66 | 蠓虫
 67 | 蜜蜂
 68 | 棉铃虫
 69 | 螟蛉
 70 | 蛲虫
 71 | 黏虫
 72 | 牛虻
 73 | 疟蚊
 74 | 蚍蜉
 75 | 瓢虫
 76 | 蛴螬
 77 | 蜣螂
 78 | 蜻蜓
 79 | 蚯蚓
 80 | 蠼螋
 81 | 群居昆虫
 82 | 沙虫
 83 | 砂蜥
 84 | 珊瑚虫
 85 | 虱卵
 86 | 石蝇
 87 | 水蛇
 88 | 水蝎
 89 | 水蚤
 90 | 丝虫
 91 | 松毛虫
 92 | 缩头虫
 93 | 螳螂
 94 | 绦虫
 95 | 天牛
 96 | 跳蚤
 97 | 头虱
 98 | 土鳖
 99 | 五步蛇
100 | 无翅蚜虫
101 | 蜈蚣
102 | 吸虫
103 | 蟋蟀
104 | 蜥蜴
105 | 纤毛虫
106 | 响尾蛇
107 | 小四脚蛇
108 | 雄蜂
109 | 旋毛虫
110 | 血吸虫
111 | 蚜虫
112 | 眼镜蛇
113 | 眼镜王蛇
114 | 野蜂
115 | 夜光虫
116 | 银环蛇
117 | 萤火虫
118 | 有翅蚜虫
119 | 有孔虫
120 | 游蛇
121 | 蚱蝉
122 | 蚱蜢
123 | 蟑螂
124 | 蜘蛛
125 | 竹节虫
126 | 竹节蛇
127 | 蛀心虫
128 | 紫胶虫
129 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/计算机词汇大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/计算机词汇大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/颜色名称.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/颜色名称.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/风云雨雪雾雷虹词库.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/风云雨雪雾雷虹词库.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words.Test/_texts/饮食大全【官方推荐】.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words.Test/_texts/饮食大全【官方推荐】.txt


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/Properties/ToolGood.Words.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/Properties/ToolGood.Words.snk


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/TextSearch/Result/IllegalWordsSearchResult.cs:
--------------------------------------------------------------------------------
 1 | namespace ToolGood.Words
 2 | {
 3 |     public class IllegalWordsSearchResult
 4 |     {
 5 | 
 6 |         internal IllegalWordsSearchResult(string keyword, int start, int end, int index, string matchKeyword, int type)
 7 |         {
 8 |             MatchKeyword = matchKeyword;
 9 |             End = end;
10 |             Start = start;
11 |             Index = index;
12 |             Keyword = keyword;
13 |             BlacklistType = type;
14 |         }
15 | 
16 |         /// <summary>
17 |         /// 开始位置
18 |         /// </summary>
19 |         public int Start { get; private set; }
20 |         /// <summary>
21 |         /// 结束位置
22 |         /// </summary>
23 |         public int End { get; private set; }
24 |         /// <summary>
25 |         /// 原始文本
26 |         /// </summary>
27 |         public string Keyword { get; private set; }
28 | 
29 |         /// <summary>
30 |         /// 索引
31 |         /// </summary>
32 |         public int Index { get; private set; }
33 | 
34 |         /// <summary>
35 |         /// 关键字
36 |         /// </summary>
37 |         public string MatchKeyword { get; private set; }
38 | 
39 |         /// <summary>
40 |         /// 黑名单类型
41 |         /// </summary>
42 |         public int BlacklistType { get; private set; }
43 | 
44 | 
45 |         public override string ToString()
46 |         {
47 |             if (Keyword != MatchKeyword) {
48 |                 return Start.ToString() + "|" + Keyword + "|" + MatchKeyword;
49 |             }
50 |             return Start.ToString() + "|" + Keyword;
51 |         }
52 |     }
53 | }
54 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/TextSearch/Result/WordsSearchResult.cs:
--------------------------------------------------------------------------------
 1 | namespace ToolGood.Words
 2 | {
 3 |     public class WordsSearchResult
 4 |     {
 5 |         public WordsSearchResult(string keyword, int start, int end, int index)
 6 |         {
 7 |             _keyword = keyword;
 8 |             End = end;
 9 |             Start = start;
10 |             Index = index;
11 |             _matchKeyword = keyword;
12 |         }
13 | 
14 |         public WordsSearchResult(ref string text, int start, int end, int index)
15 |         {
16 |             _text = text;
17 |             End = end;
18 |             Start = start;
19 |             Index = index;
20 |         }
21 | 
22 | 
23 |         public WordsSearchResult(string keyword, int start, int end, int index, string matchKeyword)
24 |         {
25 |             _keyword = keyword;
26 |             End = end;
27 |             Start = start;
28 |             Index = index;
29 |             _matchKeyword = matchKeyword;
30 |         }
31 |         private string _text;
32 |         private string _keyword;
33 |         private string _matchKeyword;
34 | 
35 |         /// <summary>
36 |         /// 开始位置
37 |         /// </summary>
38 |         public int Start { get; private set; }
39 | 
40 |         /// <summary>
41 |         /// 结束位置
42 |         /// </summary>
43 |         public int End { get; private set; }
44 | 
45 | 
46 |         /// <summary>
47 |         /// 关键字
48 |         /// </summary>
49 |         public string Keyword {
50 |             get
51 |             {
52 |                 if (_keyword == null) {
53 |                     _keyword = _text.Substring(Start, End + 1 - Start);
54 |                 }
55 |                 return _keyword;
56 |             }
57 |         }
58 | 
59 |         /// <summary>
60 |         /// 索引
61 |         /// </summary>
62 |         public int Index { get; private set; }
63 | 
64 |         /// <summary>
65 |         /// 匹配关键字
66 |         /// </summary>
67 |         public string MatchKeyword {
68 |             get
69 |             {
70 |                 if (_matchKeyword == null) {
71 |                     if (_keyword == null) {
72 |                         _matchKeyword = _text.Substring(Start, End + 1 - Start);
73 |                     } else {
74 |                         _matchKeyword = _keyword;
75 |                     }
76 |                 }
77 |                 return _matchKeyword;
78 |             }
79 |         }
80 | 
81 | 
82 |         public override string ToString()
83 |         {
84 |             if (MatchKeyword != Keyword) {
85 |                 return Start.ToString() + "|" + Keyword + "|" + MatchKeyword;
86 |             }
87 |             return Start.ToString() + "|" + Keyword;
88 |         }
89 |     }
90 | }
91 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/ToolGood.Words.csproj:
--------------------------------------------------------------------------------
 1 | <Project Sdk="Microsoft.NET.Sdk">
 2 | 
 3 |   <PropertyGroup>
 4 |     <Description>一款高性能敏感词(非法词/脏字)检测过滤组件,附带繁体简体互换,支持全角半角互换,汉字转拼音,模糊搜索等功能。</Description>
 5 |     <Copyright>Copyright 2017-2025 ToolGood</Copyright>
 6 |     <AssemblyTitle>ToolGood.Words</AssemblyTitle>
 7 |     <VersionPrefix>2.0.0</VersionPrefix>
 8 |     <Authors>ToolGood</Authors>
 9 |     <TargetFrameworks>netstandard2.1;net6.0;net8.0;net9.0</TargetFrameworks>
10 |     <AssemblyName>ToolGood.Words</AssemblyName>
11 |     <AssemblyOriginatorKeyFile>Properties\ToolGood.Words.snk</AssemblyOriginatorKeyFile>
12 |     <SignAssembly>true</SignAssembly>
13 |     <PackageId>ToolGood.Words</PackageId>
14 |     <PackageTags>word-filter;stringsearch;wordssearch;pinyin;textfilter;wordfilter;text-filter;sensitive-word-filter;aho-corasick;string-matching;text-matching;text-search;trietree;filter;textsearch</PackageTags>
15 |     <PackageProjectUrl>https://github.com/toolgood/ToolGood.Words</PackageProjectUrl>
16 |     <PackageLicenseUrl></PackageLicenseUrl>
17 |     <RepositoryType>git</RepositoryType>
18 |     <RootNamespace>ToolGood.Words</RootNamespace>
19 |     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
20 |     <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
21 |     <Version>3.1.0.2</Version>
22 |     <PackageReleaseNotes></PackageReleaseNotes>
23 |     <PackageLicenseFile>LICENSE</PackageLicenseFile>
24 |     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
25 |     <DefineConstants>$(DefineConstants);NETSTANDARD</DefineConstants>
26 |   </PropertyGroup>
27 | 
28 |   <ItemGroup>
29 |     <EmbeddedResource Include="dict\s2t.dat.br" />
30 |     <EmbeddedResource Include="dict\t2hk.dat.br" />
31 |     <EmbeddedResource Include="dict\t2s.dat.br" />
32 |     <EmbeddedResource Include="dict\t2tw.dat.br" />
33 |     <EmbeddedResource Include="dict\pyIndex.txt.br" />
34 |     <EmbeddedResource Include="dict\pyIndex2.txt.br" />
35 |     <EmbeddedResource Include="dict\pyName.txt.br" />
36 |     <EmbeddedResource Include="dict\pyWords.txt.br" />
37 |   </ItemGroup>
38 | 
39 |   <ItemGroup>
40 |     <None Include="..\..\LICENSE">
41 |       <Pack>True</Pack>
42 |       <PackagePath></PackagePath>
43 |     </None>
44 |   </ItemGroup>
45 | 
46 |   <PropertyGroup>
47 |     <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\ToolGood.Words.xml</DocumentationFile>
48 |     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
49 |     <RepositoryUrl></RepositoryUrl>
50 |     <Nullable>disable</Nullable>
51 |   </PropertyGroup>
52 | 
53 | </Project>
54 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/pyIndex.txt.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/pyIndex.txt.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/pyIndex2.txt.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/pyIndex2.txt.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/pyName.txt.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/pyName.txt.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/pyWords.txt.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/pyWords.txt.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/s2t.dat.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/s2t.dat.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/t2hk.dat.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/t2hk.dat.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/t2s.dat.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/t2s.dat.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/dict/t2tw.dat.br:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/ToolGood.Words/dict/t2tw.dat.br


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/internals/IntDictionary.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace ToolGood.Words.internals
 7 | {
 8 |     public struct IntDictionary
 9 |     {
10 |         private ushort[] _keys;
11 |         private int[] _values;
12 |         private int last;
13 |         public IntDictionary(ushort[] keys, int[] values)
14 |         {
15 |             _keys = keys;
16 |             _values = values;
17 |             last = keys.Length - 1;
18 |         }
19 |         public IntDictionary(Dictionary<ushort, int> dict)
20 |         {
21 |             var keys = dict.Select(q => q.Key).OrderBy(q => q).ToArray();
22 |             var values = new int[keys.Length];
23 |             for (int i = 0; i < keys.Length; i++) {
24 |                 values[i] = dict[keys[i]];
25 |             }
26 |             _keys = keys;
27 |             _values = values;
28 |             last = keys.Length - 1;
29 |         }
30 | 
31 | 
32 |         public ushort[] Keys {
33 |             get {
34 |                 return _keys;
35 |             }
36 |         }
37 | 
38 |         public int[] Values {
39 |             get {
40 |                 return _values;
41 |             }
42 |         }
43 | 
44 |         public bool TryGetValue(ushort key, out int value)
45 |         {
46 |             if (last == -1) {
47 |                 value = 0;
48 |                 return false;
49 |             }
50 |             if (_keys[0] == key) {
51 |                 value = _values[0];
52 |                 return true;
53 |             } else if (last == 0 || _keys[0] > key) {
54 |                 value = 0;
55 |                 return false;
56 |             }
57 | 
58 |             if (_keys[last] == key) {
59 |                 value = _values[last];
60 |                 return true;
61 |             } else if (_keys[last] < key) {
62 |                 value = 0;
63 |                 return false;
64 |             }
65 | 
66 |             var left = 1;
67 |             var right = last - 1;
68 |             while (left <= right) {
69 |                 int mid = (left + right) >> 1;
70 |                 int d = _keys[mid] - key;
71 | 
72 |                 if (d == 0) {
73 |                     value = _values[mid];
74 |                     return true;
75 |                 } else if (d > 0) {
76 |                     right = mid - 1;
77 |                 } else {
78 |                     left = mid + 1;
79 |                 }
80 |             }
81 |             value = 0;
82 |             return false;
83 |         }
84 | 
85 | 
86 | 
87 |     }
88 | }
89 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/internals/TrieNode.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace ToolGood.Words.internals
 7 | {
 8 |     public sealed class TrieNode //:IDisposable
 9 |     {
10 |         public int Index;
11 |         public int Layer;
12 |         public bool End { get { return Results != null; } }
13 |         public char Char;
14 |         public List<int> Results;
15 |         public Dictionary<char, TrieNode> m_values;
16 |         public TrieNode Failure;
17 |         public TrieNode Parent;
18 |         public bool IsWildcard;
19 |         public int WildcardLayer;
20 |         public bool HasWildcard;
21 | 
22 | 
23 |         public TrieNode Add(char c)
24 |         {
25 |             TrieNode node;
26 |             if (m_values == null) {
27 |                 m_values = new Dictionary<char, TrieNode>();
28 |             } else if (m_values.TryGetValue(c, out node)) {
29 |                 return node;
30 |             }
31 |             node = new TrieNode();
32 |             node.Parent = this;
33 |             node.Char = c;
34 |             m_values[c] = node;
35 |             return node;
36 |         }
37 | 
38 |         public void SetResults(int index)
39 |         {
40 | 
41 |             if (Results == null) {
42 |                 Results = new List<int>();
43 |             }
44 |             Results.Add(index);
45 |         }
46 |         /// <summary>
47 |         /// 伪释放
48 |         /// </summary>
49 |         public void Dispose()
50 |         {
51 |             if (Results!=null) {
52 |                 Results.Clear();
53 |                 Results = null;
54 |             }
55 |             if (m_values!=null) {
56 |                 m_values.Clear();
57 |                 m_values = null;
58 |             }
59 |             Failure =null;
60 |             Parent = null;
61 |         }
62 |     }
63 | }
64 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/internals/TrieNode2.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace ToolGood.Words.internals
 7 | {
 8 |     public sealed class TrieNode2
 9 |     {
10 |         public bool End { get { return Results != null; } }
11 |         public List<int> Results;
12 |         public Dictionary<char, TrieNode2> m_values;
13 |         private uint minflag = uint.MaxValue;
14 |         private uint maxflag = uint.MinValue;
15 | 
16 | 
17 |         public void Add(char c, TrieNode2 node3)
18 |         {
19 |             if (minflag > c) { minflag = c; }
20 |             if (maxflag < c) { maxflag = c; }
21 |             if (m_values==null) {
22 |                 m_values = new Dictionary<char, TrieNode2>();
23 |             }
24 |             m_values.Add(c, node3);
25 |         }
26 | 
27 |         public void SetResults(int index)
28 |         {
29 |             if (Results == null) {
30 |                 Results = new List<int>();
31 |             }
32 |      
33 |             if (Results.Contains(index) == false) {
34 |                 Results.Add(index);
35 |             }
36 |         }
37 | 
38 |         public bool HasKey(char c)
39 |         {
40 |             if (m_values==null) {
41 |                 return false;
42 |             }
43 |             return m_values.ContainsKey(c);
44 |         }
45 | 
46 |         public bool TryGetValue(char c, out TrieNode2 node)
47 |         {
48 |             if (minflag <= (uint)c && maxflag >= (uint)c) {
49 |                 return m_values.TryGetValue(c, out node);
50 |             }
51 |             node = null;
52 |             return false;
53 |         }
54 | 
55 |     }
56 | }
57 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/internals/TrieNode3.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace ToolGood.Words.internals
 7 | {
 8 |     public sealed class TrieNode3
 9 |     {
10 |         public bool End { get { return Results != null; } }
11 |         public bool HasWildcard;
12 |         public List<int> Results;
13 |         public Dictionary<char, TrieNode3> m_values;
14 |         private uint minflag = uint.MaxValue;
15 |         private uint maxflag = uint.MinValue;
16 |         public TrieNode3 WildcardNode;
17 | 
18 | 
19 |         public void Add(char c, TrieNode3 node3)
20 |         {
21 |             if (minflag > c) { minflag = c; }
22 |             if (maxflag < c) { maxflag = c; }
23 |             if (m_values == null) {
24 |                 m_values = new Dictionary<char, TrieNode3>();
25 |             }
26 |             m_values.Add(c, node3);
27 |         }
28 | 
29 |         public void SetResults(int index)
30 |         {
31 |             if (Results == null) {
32 |                 Results = new List<int>();
33 |             }
34 |             if (Results.Contains(index) == false) {
35 |                 Results.Add(index);
36 |             }
37 |         }
38 | 
39 |         public bool HasKey(char c)
40 |         {
41 |             if (m_values==null) {
42 |                 return false;
43 |             }
44 |             return m_values.ContainsKey(c);
45 |         }
46 | 
47 |         public bool TryGetValue(char c, out TrieNode3 node)
48 |         {
49 |             if (minflag <= (uint)c && maxflag >= (uint)c) {
50 |                 return m_values.TryGetValue(c, out node);
51 |             }
52 |             node = null;
53 |             return false;
54 |         }
55 |     }
56 | }
57 | 


--------------------------------------------------------------------------------
/csharp/ToolGood.Words/internals/TrieNode3Ex.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Text;
 5 | 
 6 | namespace ToolGood.Words.internals
 7 | {
 8 |     public sealed class TrieNode3Ex
 9 |     {
10 |         public int Index;
11 |         public bool End { get { return Results != null; } }
12 |         public List<int> Results;
13 |         public Dictionary<char, TrieNode3Ex> m_values;
14 |         public ushort minflag = ushort.MaxValue;
15 |         public ushort maxflag = ushort.MinValue;
16 |         public bool HasWildcard;
17 |         public TrieNode3Ex WildcardNode;
18 | 
19 |         public void Add(char c, TrieNode3Ex node3)
20 |         {
21 |             if (minflag > c) { minflag = c; }
22 |             if (maxflag < c) { maxflag = c; }
23 |             if (m_values == null) {
24 |                 m_values = new Dictionary<char, TrieNode3Ex>();
25 |             }
26 |             m_values.Add(c, node3);
27 |         }
28 | 
29 |         public void SetResults(int index)
30 |         {
31 |             if (Results == null) {
32 |                 Results = new List<int>();
33 |             }
34 |             if (Results.Contains(index) == false) {
35 |                 Results.Add(index);
36 |             }
37 |         }
38 | 
39 |         public bool HasKey(char c)
40 |         {
41 |             if (m_values == null) {
42 |                 return false;
43 |             }
44 |             return m_values.ContainsKey(c);
45 |         }
46 | 
47 | 
48 |     }
49 | }
50 | 


--------------------------------------------------------------------------------
/csharp/lib/ChineseConverter.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/ChineseConverter.dll


--------------------------------------------------------------------------------
/csharp/lib/ChnCharInfo.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/ChnCharInfo.dll


--------------------------------------------------------------------------------
/csharp/lib/PinYinData/0x9FA6.txt:
--------------------------------------------------------------------------------
 1 | 龦 cháng
 2 | 龧 shù
 3 | 龨 huái
 4 | 龩 jìn
 5 | 龪 fù
 6 | 龫 gàn
 7 | 龬 wǎng
 8 | 龭 yì
 9 | 龮 yì
10 | 龯 yuè huì
11 | 龰 zhǐ
12 | 龱 sì,xìn
13 | 龲 kù
14 | 龳 lù
15 | 龴 yǒng
16 | 龵 shǒu
17 | 龶 qīng
18 | 龷 xī
19 | 龸 dǎng
20 | 龹 juǎn
21 | 龺 qián
22 | 龻 biàn
23 | 龼 ruì
24 | 龽 jiāo
25 | 龾 jú
26 | 龿 jiā
27 | 鿀 yī
28 | 鿁 hòng
29 | 鿂 niǎo
30 | 鿃 shǎn
31 | 鿄 liáng
32 | 鿅 líng
33 | 鿆 fú
34 | 鿇 zhēng
35 | 鿈 chě
36 | 鿉 wǔ
37 | 鿊 zhǐ
38 | 鿋 xǐ
39 | 鿌 liáng
40 | 鿍 gàng
41 | 鿎 gàng
42 | 鿏 mài
43 | 鿐 jiǔ
44 | 鿑 jué
45 | 鿒 yè
46 | 鿓 yè
47 | 鿔 gē
48 | 鿕 dān
49 | 鿜 lā
50 | 鿥 láng
51 | 鿨 léi
52 | 鿝 léng
53 | 鿟 lì
54 | 鿠 lì
55 | 鿞 liè
56 | 鿛 líng
57 | 鿧 lóng
58 | 鿩 lǔ
59 | 鿡 luó
60 | 鿤 gé
61 | 鿢 hé
62 | 鿣 kè
63 | 鿚 gé
64 | 鿘 hé
65 | 鿙 kè
66 | 鿦 yīng
67 | 鿖 hé 
68 | 鿗 yī
69 | 


--------------------------------------------------------------------------------
/csharp/lib/Scel/147种水果的名字.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/147种水果的名字.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/765个世界主要城市.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/765个世界主要城市.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/世界所有国家及其首都.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/世界所有国家及其首都.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/中医中药大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/中医中药大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/书法词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/书法词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/二人转词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/二人转词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/亲戚称呼.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/亲戚称呼.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/保险词汇【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/保险词汇【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/全国省市区县地名.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/全国省市区县地名.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/农业词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/农业词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/冰雪名词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/冰雪名词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/冶金词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/冶金词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/动物词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/动物词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/化学化工词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/化学化工词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/化学品名.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/化学品名.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/医学词汇大全.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/医学词汇大全.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/医疗器械大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/医疗器械大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/园林花草名称词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/园林花草名称词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/国家和地区词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/国家和地区词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/地名词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/地名词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/地理名词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/地理名词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/地理地质词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/地理地质词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/地表水文词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/地表水文词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/基础数学用词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/基础数学用词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/天文学天体类词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/天文学天体类词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/天文词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/天文词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/家居装修词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/家居装修词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/建筑词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/建筑词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/恒星、银河系词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/恒星、银河系词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/搜狗标准词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/搜狗标准词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/数学词库EXTEND版.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/数学词库EXTEND版.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/数学词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/数学词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/时空类词汇总库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/时空类词汇总库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/最新车型大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/最新车型大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/最详细的全国地名大全.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/最详细的全国地名大全.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/机械词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/机械词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/植物名词大全.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/植物名词大全.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/植物学名词术语.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/植物学名词术语.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/植物词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/植物词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/气象与降水名词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/气象与降水名词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/气象词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/气象词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/水利词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/水利词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/法律词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/法律词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/测绘词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/测绘词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/物流词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/物流词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/物理词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/物理词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/生物词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/生物词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/电力词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/电力词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/电子商务专用词库【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/电子商务专用词库【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/电子词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/电子词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/真菌类名词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/真菌类名词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/经济生活词汇.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/经济生活词汇.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/美容词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/美容词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/联合国成员国名单.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/联合国成员国名单.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/艺术专用词汇.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/艺术专用词汇.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/花卉名词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/花卉名词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/花木名称大全.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/花木名称大全.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/虫蛇类名词.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/虫蛇类名词.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/计算机词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/计算机词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/财经金融词汇大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/财经金融词汇大全【官方推荐】.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/颜色名称.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/颜色名称.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/风云雨雪雾雷虹词库.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/风云雨雪雾雷虹词库.scel


--------------------------------------------------------------------------------
/csharp/lib/Scel/饮食大全【官方推荐】.scel:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/csharp/lib/Scel/饮食大全【官方推荐】.scel


--------------------------------------------------------------------------------
/golang/ToolGood/Words/IllegalWordsSearchResult.go:
--------------------------------------------------------------------------------
 1 | package Words
 2 | 
 3 | type IllegalWordsSearchResult struct {
 4 | 	Start int
 5 | 	End int
 6 | 	Keyword string
 7 | 	BlacklistType int
 8 | 	SrcString string
 9 | }
10 |  
11 | func NewIllegalWordsSearchResult(keyword string,start int,end int,srcText string,_type int) *IllegalWordsSearchResult  {
12 | 	return &IllegalWordsSearchResult{
13 | 		Start:start,
14 | 		End:end,
15 | 		Keyword:keyword,
16 | 		SrcString:string ( []rune(srcText)[start:end]),
17 | 		BlacklistType:_type,
18 | 	}
19 | }
20 |  


--------------------------------------------------------------------------------
/golang/ToolGood/Words/StringSearchEx.go:
--------------------------------------------------------------------------------
  1 | package Words
  2 | 
  3 | import . "./internals"
  4 | 
  5 |  
  6 | type StringSearchEx struct {
  7 | 	BaseSearchEx
  8 | }
  9 | 
 10 | func NewStringSearchEx() *StringSearchEx{
 11 | 	return &StringSearchEx{
 12 | 	}
 13 | }
 14 | 
 15 | func (this *StringSearchEx)FindAll(text string) []string  {
 16 | 	root:= make([]string, 0)
 17 | 	p:=0
 18 | 	for _,c := range text {
 19 | 		t:=this.I_dict[c]
 20 | 		if	t==0{
 21 | 			p = 0;
 22 | 			continue;
 23 | 		}
 24 | 		next := this.I_next[p] + t;
 25 | 		find := this.I_key[next] == t;
 26 | 		if  find == false && p != 0  {
 27 | 			p = 0;
 28 | 			next = this.I_next[0] + t;
 29 | 			find = this.I_key[next] == t;
 30 | 		}
 31 | 		if  find  {
 32 | 			index := this.I_check[next];
 33 | 			if (index > 0) {
 34 | 				for _,item:=range this.I_guides[index]{
 35 | 					root=append(root,this.I_keywords[item])
 36 | 				}
 37 | 			}
 38 | 			p = next;
 39 | 		}
 40 | 	}
 41 | 	return root;
 42 | }
 43 |  
 44 | 
 45 | func (this *StringSearchEx)FindFirst(text string) string  {
 46 | 	p:=0
 47 | 	for _,c := range text {
 48 | 		t:=this.I_dict[c]
 49 | 		if	t==0{
 50 | 			p = 0;
 51 | 			continue;
 52 | 		}
 53 | 		next := this.I_next[p] + t;
 54 | 		find := this.I_key[next] == t;
 55 | 		if  find == false && p != 0  {
 56 | 			p = 0;
 57 | 			next = this.I_next[0] + t;
 58 | 			find = this.I_key[next] == t;
 59 | 		}
 60 | 		if  find  {
 61 | 			index := this.I_check[next];
 62 | 			if (index > 0) {
 63 | 				return this.I_keywords[this.I_guides[index][0]];
 64 | 			}
 65 | 			p = next;
 66 | 		}
 67 | 	}
 68 | 	return "";
 69 | }
 70 |  
 71 | 
 72 | func (this *StringSearchEx)ContainsAny(text string) bool  {
 73 | 	p:=0
 74 | 	for _,c := range text {
 75 | 		t:=this.I_dict[c]
 76 | 		if	t==0{
 77 | 			p = 0;
 78 | 			continue;
 79 | 		}
 80 | 		next := this.I_next[p] + t;
 81 | 
 82 | 		if this.I_key[next] == t {
 83 | 			if  this.I_check[next] > 0  { 
 84 | 				return true;
 85 | 			}
 86 | 			p = next;
 87 | 		} else {
 88 | 			p = 0;
 89 | 			next = this.I_next[p] + t;
 90 | 			if (this.I_key[next] == t) {
 91 | 				if (this.I_check[next] > 0) {
 92 | 					 return true;
 93 | 				}
 94 | 				p = next;
 95 | 			}
 96 | 		}
 97 | 	}
 98 | 	return false;
 99 | }
100 |  
101 | 
102 | func (this *StringSearchEx)Replace(text string, replaceChar rune) string  {
103 | 	result:= []rune (text)
104 | 	p:=0
105 | 	var i int
106 | 	for _,c := range text {
107 | 		t:=this.I_dict[c]
108 | 		if	t==0{
109 | 			p = 0;
110 | 			i++
111 | 			continue;
112 | 		}
113 | 		next := this.I_next[p] + t;
114 | 		find := this.I_key[next] == t;
115 | 		if  find == false && p != 0  {
116 | 			p = 0;
117 | 			next = this.I_next[0] + t;
118 | 			find = this.I_key[next] == t;
119 | 		}
120 | 		if  find  {
121 | 			index := this.I_check[next];
122 | 			if (index > 0) {
123 | 				r:=this.I_keywords[this.I_guides[index][0]]
124 | 				maxLength:=len([]rune(r))
125 | 				start:= i + 1 - maxLength
126 | 				for j := start; j <= i; j++{
127 | 					result[j]=replaceChar
128 | 				} 
129 | 			}
130 | 			p = next;
131 | 		}
132 | 		i++
133 | 	}
134 | 	return string (result) 
135 | }
136 | 


--------------------------------------------------------------------------------
/golang/ToolGood/Words/WordsSearchEx.go:
--------------------------------------------------------------------------------
  1 | package Words
  2 | 
  3 | import . "./internals"
  4 | 
  5 |  
  6 | type WordsSearchEx struct {
  7 | 	BaseSearchEx
  8 | }
  9 | 
 10 | func NewWordsSearchEx() *WordsSearchEx{
 11 | 	return &WordsSearchEx{
 12 | 	}
 13 | }
 14 | 
 15 | func (this *WordsSearchEx)FindAll(text string) []*WordsSearchResult  {
 16 | 	list:= make([]*WordsSearchResult, 0)
 17 | 	p:=0
 18 | 	var i int
 19 | 	for _,c := range text {
 20 | 		t:=this.I_dict[c]
 21 | 		if	t==0{
 22 | 			p = 0;
 23 | 			i++
 24 | 			continue;
 25 | 		}
 26 | 		next := this.I_next[p] + t;
 27 | 		find := this.I_key[next] == t;
 28 | 		if  find == false && p != 0  {
 29 | 			p = 0;
 30 | 			next = this.I_next[0] + t;
 31 | 			find = this.I_key[next] == t;
 32 | 		}
 33 | 		if  find  {
 34 | 			index := this.I_check[next];
 35 | 			if (index > 0) {
 36 | 				for _,item:=range this.I_guides[index]{
 37 | 					k:=this.I_keywords[item]
 38 | 					maxLength:=len([]rune(k))
 39 | 					r:= NewWordsSearchResult(k, i + 1 - maxLength, i, index);
 40 | 					list=append(list,r)
 41 | 				}
 42 | 			}
 43 | 			p = next;
 44 | 		}
 45 | 		i++
 46 | 	}
 47 | 	return list;
 48 | }
 49 |  
 50 | 
 51 | func (this *WordsSearchEx)FindFirst(text string) *WordsSearchResult  {
 52 | 	p:=0
 53 | 	var i int
 54 | 	for _,c := range text {
 55 | 		t:=this.I_dict[c]
 56 | 		if	t==0{
 57 | 			p = 0;
 58 | 			i++
 59 | 			continue;
 60 | 		}
 61 | 		next := this.I_next[p] + t;
 62 | 		find := this.I_key[next] == t;
 63 | 		if  find == false && p != 0  {
 64 | 			p = 0;
 65 | 			next = this.I_next[0] + t;
 66 | 			find = this.I_key[next] == t;
 67 | 		}
 68 | 		if  find  {
 69 | 			index := this.I_check[next];
 70 | 			if (index > 0) {
 71 | 				k:=this.I_keywords[this.I_guides[index][0]]
 72 | 				maxLength:=len([]rune(k))
 73 | 				return NewWordsSearchResult(k, i + 1 - maxLength, i, index);
 74 | 			}
 75 | 			p = next;
 76 | 		}
 77 | 		i++
 78 | 	}
 79 | 	return nil;
 80 | }
 81 |  
 82 | 
 83 | func (this *WordsSearchEx)ContainsAny(text string) bool  {
 84 | 	p:=0
 85 | 	for _,c := range text {
 86 | 		t:=this.I_dict[c]
 87 | 		if	t==0{
 88 | 			p = 0;
 89 | 			continue;
 90 | 		}
 91 | 		next := this.I_next[p] + t;
 92 | 
 93 | 		if this.I_key[next] == t {
 94 | 			if  this.I_check[next] > 0  { 
 95 | 				return true;
 96 | 			}
 97 | 			p = next;
 98 | 		} else {
 99 | 			p = 0;
100 | 			next = this.I_next[p] + t;
101 | 			if (this.I_key[next] == t) {
102 | 				if (this.I_check[next] > 0) {
103 | 					 return true;
104 | 				}
105 | 				p = next;
106 | 			}
107 | 		}
108 | 	}
109 | 	return false;
110 | }
111 |  
112 | 
113 | func (this *WordsSearchEx)Replace(text string, replaceChar rune) string  {
114 | 	result:= []rune (text)
115 | 	p:=0
116 | 	var i int
117 | 	for _,c := range text {
118 | 		t:=this.I_dict[c]
119 | 		if	t==0{
120 | 			p = 0;
121 | 			i++
122 | 			continue;
123 | 		}
124 | 		next := this.I_next[p] + t;
125 | 		find := this.I_key[next] == t;
126 | 		if  find == false && p != 0  {
127 | 			p = 0;
128 | 			next = this.I_next[0] + t;
129 | 			find = this.I_key[next] == t;
130 | 		}
131 | 		if  find  {
132 | 			index := this.I_check[next];
133 | 			if (index > 0) {
134 | 				r:=this.I_keywords[this.I_guides[index][0]]
135 | 				maxLength:=len([]rune(r))
136 | 				start:= i + 1 - maxLength
137 | 				for j := start; j <= i; j++{
138 | 					result[j]=replaceChar
139 | 				} 
140 | 			}
141 | 			p = next;
142 | 		}
143 | 		i++
144 | 	}
145 | 	return string (result) 
146 | }
147 | 


--------------------------------------------------------------------------------
/golang/ToolGood/Words/WordsSearchResult.go:
--------------------------------------------------------------------------------
 1 | package Words
 2 | 
 3 | type WordsSearchResult struct {
 4 | 	Start int
 5 | 	End int
 6 | 	Keyword string
 7 | 	Index int
 8 | }
 9 | 
10 | func NewWordsSearchResult(keyword string,start int,end int,index int) *WordsSearchResult  {
11 | 	return &WordsSearchResult{
12 | 		Start:start,
13 | 		End:end,
14 | 		Keyword:keyword,
15 | 		Index:index,
16 | 	}
17 | }


--------------------------------------------------------------------------------
/golang/ToolGood/Words/internals/TrieNode.go:
--------------------------------------------------------------------------------
 1 | package internals
 2 | 
 3 | type TrieNode struct {
 4 | 	Index    int
 5 | 	Layer    int
 6 | 	End      bool
 7 | 	Char     int
 8 | 	Results  []int
 9 | 	M_values map[int]*TrieNode
10 | 	Failure  *TrieNode
11 | 	Parent   *TrieNode
12 | }
13 | 
14 | func NewTrieNode() *TrieNode {
15 | 	return &TrieNode{
16 | 		End:      false,
17 | 		M_values: make(map[int]*TrieNode),
18 | 		Results:  make([]int, 0),
19 | 	}
20 | }
21 | 
22 | func (this *TrieNode) Add(c int) *TrieNode {
23 | 	if val, s := this.M_values[c]; s {
24 | 		return val
25 | 	}
26 | 	node := NewTrieNode()
27 | 	node.Parent = this
28 | 	node.Char = c
29 | 	this.M_values[c] = node
30 | 	return node
31 | }
32 | 
33 | func (this *TrieNode) SetResults(text int) {
34 | 	if this.End == false {
35 | 		this.End = true
36 | 	}
37 | 	for i := 0; i < len(this.Results); i++ {
38 | 		if this.Results[i] == text {
39 | 			return
40 | 		}
41 | 	}
42 | 	this.Results = append(this.Results, text)
43 | }
44 | 


--------------------------------------------------------------------------------
/golang/ToolGood/Words/internals/TrieNode2.go:
--------------------------------------------------------------------------------
 1 | package internals
 2 | 
 3 | type TrieNode2 struct {
 4 | 	End      bool
 5 | 	Results  []int
 6 | 	M_values map[int32]*TrieNode2
 7 | 	minflag  int32
 8 | 	maxflag  int32
 9 | }
10 | 
11 | func NewTrieNode2() *TrieNode2 {
12 | 	return &TrieNode2{
13 | 		End:      false,
14 | 		M_values: make(map[int32]*TrieNode2),
15 | 		Results:  make([]int, 0),
16 | 		minflag:  0,
17 | 		maxflag:  0xffff,
18 | 	}
19 | }
20 | 
21 | func (this *TrieNode2) Add(c int32, node *TrieNode2) {
22 | 	if this.minflag < c {
23 | 		this.minflag = c
24 | 	}
25 | 	if this.maxflag > c {
26 | 		this.maxflag = c
27 | 	}
28 | 	this.M_values[c] = node
29 | }
30 | 
31 | func (this *TrieNode2) SetResults(text int) {
32 | 	if this.End == false {
33 | 		this.End = true
34 | 	}
35 | 	for i := 0; i < len(this.Results); i++ {
36 | 		if this.Results[i] == text {
37 | 			return
38 | 		}
39 | 	}
40 | 	this.Results = append(this.Results, text)
41 | }
42 | 
43 | func (this *TrieNode2) TryGetValue(c int32) (bool, *TrieNode2) {
44 | 	if this.minflag <= c && this.maxflag >= c {
45 | 		if val, s := this.M_values[c]; s {
46 | 			return true, val
47 | 		}
48 | 	}
49 | 	return false, nil
50 | }
51 | 
52 | func (this *TrieNode2) HasKey(c int32) bool {
53 | 	if this.minflag <= c && this.maxflag >= c {
54 | 		if _, s := this.M_values[c]; s {
55 | 			return true
56 | 		}
57 | 	}
58 | 	return false
59 | }
60 | 


--------------------------------------------------------------------------------
/golang/ToolGood/Words/internals/TrieNodes.go:
--------------------------------------------------------------------------------
 1 | package internals
 2 | 
 3 | type TrieNodes struct {
 4 | 	Items []*TrieNode
 5 | }
 6 | 
 7 | func NewTrieNodes() *TrieNodes {
 8 | 	return &TrieNodes{
 9 | 		Items: make([]*TrieNode, 0),
10 | 	}
11 | }
12 | 


--------------------------------------------------------------------------------
/java/toolgood.words/build.bat:
--------------------------------------------------------------------------------
1 | mvn clean  install -Dmaven.test.skip javadoc:jar source:jar install gpg:sign


--------------------------------------------------------------------------------
/java/toolgood.words/mvn-build.bat:
--------------------------------------------------------------------------------
1 | mvn clean deploy


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/IllegalWordsSearchResult.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words;
 2 | 
 3 | 
 4 | public class IllegalWordsSearchResult
 5 | {
 6 |     public IllegalWordsSearchResult(final String keyword, final int start, final int end, final int index,
 7 |             final String matchKeyword, final int type)
 8 |     {
 9 |         MatchKeyword = matchKeyword;
10 |         End = end;
11 |         Start = start;
12 |         Index = index;
13 |         Keyword = keyword;
14 |         BlacklistType = type;
15 |     }
16 | 
17 |     /**开始位置 */
18 |     public int Start;
19 |     /**结束位置 */
20 |     public int End ;
21 |     /**原始文本 */
22 |     public String Keyword ;
23 |     /**关键字 */
24 |     public String MatchKeyword;
25 |     /**黑名单类型 */
26 |     public int BlacklistType ;
27 |     /**索引 */
28 |     public int Index;
29 | 
30 |  
31 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/WordsSearchResult.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words;
 2 | 
 3 | public class WordsSearchResult {
 4 | 
 5 |     public WordsSearchResult(final String keyword, final int start, final int end, final int index) {
 6 |         Keyword = keyword;
 7 |         End = end;
 8 |         Start = start;
 9 |         Index = index;
10 |         MatchKeyword = keyword;
11 |     }
12 | 
13 |     public WordsSearchResult(final String keyword, final int start, final int end, final int index,
14 |             final String matchKeyword) {
15 |         Keyword = keyword;
16 |         End = end;
17 |         Start = start;
18 |         Index = index;
19 |         MatchKeyword = matchKeyword;
20 |     }
21 | 
22 |     /** 开始位置 */
23 |     public int Start;
24 |     /** 结束位置 */
25 |     public int End;
26 |     /** 关键字 */
27 |     public String Keyword;
28 |     /** 索引 */
29 |     public int Index;
30 |     /** 匹配关键字 */
31 |     public String MatchKeyword;
32 | 
33 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/internals/IntDictionary.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words.internals;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | import java.util.Map;
 6 | 
 7 | public class IntDictionary {
 8 |     private int[] _keys;
 9 |     private int[] _values;
10 |     private int last;
11 | 
12 |     public IntDictionary() {
13 |         last = -1;
14 |     }
15 | 
16 |     public int[] getKeys() {
17 |         return _keys;
18 |     }
19 | 
20 |     public int[] getValues() {
21 |         return _values;
22 |     }
23 | 
24 |     public void SetDictionary(Map<Integer, Integer> dict) {
25 | 
26 |         List<Integer> keys = new ArrayList<Integer>();
27 |         dict.forEach((k, v) -> {
28 |             keys.add((int) k);
29 |         });
30 | 
31 |         _keys = new int[dict.size()];
32 |         _values = new int[dict.size()];
33 |         for (int i = 0; i < keys.size(); i++) {
34 |             _keys[i] = keys.get(i);
35 |             _values[i] = dict.get(_keys[i]);
36 |         }
37 |         last = _keys.length - 1;
38 |     }
39 | 
40 |     public void SetDictionary(int[] keys, int[] values) {
41 |         _keys = keys;
42 |         _values = values;
43 |         last = _keys.length - 1;
44 |     }
45 | 
46 |     public int IndexOf(int key) {
47 |         if (last == -1) {
48 |             return -1;
49 |         }
50 |         if (_keys[0] == key) {
51 |             return 0;
52 |         }
53 |         if (_keys[0] >key){
54 |             return -1;
55 |         }
56 |         if (_keys[last] == key) {
57 |             return last;
58 |         }
59 |         if (_keys[last] < key) {
60 |             return -1;
61 |         }
62 | 
63 | 
64 |         int left = 1;
65 |         int right = last - 1;
66 |         while (left <= right) {
67 |             int mid = (left + right) >> 1;
68 |             int d = _keys[mid] - key;
69 | 
70 |             if (d == 0) {
71 |                 return mid;
72 |             } else if (d > 0) {
73 |                 right = mid - 1;
74 |             } else {
75 |                 left = mid + 1;
76 |             }
77 |         }
78 |         return -1;
79 |     }
80 | 
81 |     public int GetValue(int index) {
82 |         return _values[index];
83 |     }
84 | 
85 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/internals/TrieNode.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words.internals;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.HashMap;
 5 | import java.util.List;
 6 | 
 7 | public final class TrieNode implements Comparable<TrieNode> {
 8 | 
 9 |     public int Index;
10 |     public int Layer;
11 |     public char Char;
12 |     public List<Integer> Results;
13 |     public HashMap<Character, TrieNode> m_values;
14 |     public TrieNode Failure;
15 |     public TrieNode Parent;
16 |     public boolean IsWildcard;
17 |     public int WildcardLayer;
18 |     public boolean HasWildcard;
19 | 
20 | 
21 |     public TrieNode() {
22 |         // m_values = new HashMap<Character, TrieNode>();
23 |         // Results = new ArrayList<Integer>();
24 |     }
25 |     public boolean End(){
26 |         return Results!=null;
27 |     }
28 | 
29 |     public TrieNode Add(final Character c) {
30 |         if(m_values==null){
31 |             m_values = new HashMap<Character, TrieNode>();
32 |         }
33 |         if (m_values.containsKey(c)) {
34 |             return m_values.get(c);
35 |         }
36 |         final TrieNode node = new TrieNode();
37 |         node.Parent = this;
38 |         node.Char = c;
39 |         m_values.put(c, node);
40 |         return node;
41 |     }
42 | 
43 |     public void SetResults(final Integer index) {
44 |         if(Results==null){
45 |             Results = new ArrayList<Integer>();
46 |         }
47 |         if (Results.contains(index) == false) {
48 |             Results.add(index);
49 |         }
50 |     }
51 | 
52 |     @Override
53 |     public int compareTo(final TrieNode o) {
54 |         return this.Layer - o.Layer  ;
55 |     }
56 |     /**
57 |      * 伪释放
58 |      */
59 |     public void Dispose()
60 |     {
61 |         if (Results!=null) {
62 |             Results.clear();
63 |             Results = null;
64 |         }
65 |         if (m_values!=null) {
66 |             m_values.clear();
67 |             m_values = null;
68 |         }
69 |         Failure =null;
70 |         Parent = null;
71 |     }
72 | }
73 | 


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/internals/TrieNode2.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words.internals;
 2 | 
 3 | import java.util.List;
 4 | import java.util.ArrayList;
 5 | import java.util.HashMap;
 6 | 
 7 | 
 8 | public final class TrieNode2{
 9 |     public List<Integer> Results;
10 |     public HashMap<Character, TrieNode2> m_values;
11 |     private int minflag = Integer.MAX_VALUE;
12 |     private int maxflag = 0;
13 | 
14 |     public TrieNode2()
15 |     {
16 |         // Results = new ArrayList<Integer>();
17 |         // m_values = new HashMap<Character, TrieNode2>();
18 |     }
19 |     public boolean End(){
20 |         return Results!=null;
21 |     }
22 | 
23 |     public void Add(final char c, final TrieNode2 node3) {
24 |         if (minflag > c) {
25 |             minflag = c;
26 |         }
27 |         if (maxflag < c) {
28 |             maxflag = c;
29 |         }
30 |         if(m_values==null){
31 |             m_values = new HashMap<Character, TrieNode2>();
32 |         }
33 |         m_values.put(c, node3);
34 |     }
35 | 
36 |     public void SetResults(final Integer index) {
37 |         if(Results==null){
38 |             Results = new ArrayList<Integer>();
39 |         }
40 |         if (Results.contains(index) == false) {
41 |             Results.add(index);
42 |         }
43 |     }
44 | 
45 |     public boolean HasKey(final char c) {
46 |         if (minflag <= c && maxflag >= c) {
47 |             return m_values.containsKey(c);
48 |         }
49 |         return false;
50 |     }
51 | 
52 |     public TrieNode2 GetValue(final char c) {
53 |         return m_values.get(c);
54 |     }
55 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/internals/TrieNode3.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words.internals;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.HashMap;
 5 | import java.util.List;
 6 | 
 7 | public final class TrieNode3 {
 8 |     public boolean HasWildcard;
 9 |     public List<Integer> Results;
10 |     public HashMap<Character, TrieNode3> m_values;
11 |     private int minflag = Integer.MAX_VALUE;
12 |     private int maxflag = 0;
13 |     public TrieNode3 WildcardNode;
14 | 
15 | 
16 |     public TrieNode3()
17 |     {
18 |         // Results = new ArrayList<Integer>();
19 |         // m_values = new HashMap<Character, TrieNode3>();
20 |     }
21 |     public boolean End(){
22 |         return Results!=null;
23 |     }
24 | 
25 |     public void Add(final char c, final TrieNode3 node3) {
26 |         if (minflag > c) {
27 |             minflag = c;
28 |         }
29 |         if (maxflag < c) {
30 |             maxflag = c;
31 |         }
32 |         if(m_values==null){
33 |             m_values = new HashMap<Character, TrieNode3>();
34 |         }
35 |         m_values.put(c, node3);
36 |     }
37 | 
38 |     public void SetResults(final int index) {
39 |         if(Results==null){
40 |             Results = new ArrayList<Integer>();
41 |         }
42 |         if (Results.contains(index) == false) {
43 |             Results.add(index);
44 |         }
45 |     }
46 | 
47 |     public boolean HasKey(final char c) {
48 |         if (minflag <= c && maxflag >= c) {
49 |             return m_values.containsKey(c);
50 |         }
51 |         return false;
52 |     }
53 | 
54 |     public TrieNode3 GetValue(final char c) {
55 |         return m_values.get(c);
56 |     }
57 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/internals/TrieNode3Ex.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words.internals;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.HashMap;
 5 | import java.util.List;
 6 | 
 7 | public final class TrieNode3Ex {
 8 |     public int Index;
 9 |     public boolean HasWildcard;
10 |     public List<Integer> Results;
11 |     public HashMap<Character, TrieNode3Ex> m_values;
12 |     public int minflag = Integer.MAX_VALUE;
13 |     public int maxflag = 0;
14 |     public TrieNode3Ex WildcardNode;
15 | 
16 | 
17 |     public TrieNode3Ex()
18 |     {
19 |         // Results = new ArrayList<Integer>();
20 |         // m_values = new HashMap<Character, TrieNode3Ex>();
21 |     }
22 |     public boolean End(){
23 |         return Results!=null;
24 |     }
25 | 
26 |     public void Add(final char c, final TrieNode3Ex node3) {
27 |         if (minflag > c) {
28 |             minflag = c;
29 |         }
30 |         if (maxflag < c) {
31 |             maxflag = c;
32 |         }
33 |         if(m_values==null){
34 |             m_values = new HashMap<Character, TrieNode3Ex>();
35 |         }
36 |         m_values.put(c, node3);
37 |     }
38 | 
39 |     public void SetResults(final int index) {
40 |         if(Results==null){
41 |             Results = new ArrayList<Integer>();
42 |         }
43 |         if (Results.contains(index) == false) {
44 |             Results.add(index);
45 |         }
46 |     }
47 | 
48 |     public boolean HasKey(final char c) {
49 |         if (minflag <= c && maxflag >= c) {
50 |             return m_values.containsKey(c);
51 |         }
52 |         return false;
53 |     }
54 | 
55 |     public TrieNode3Ex GetValue(final char c) {
56 |         return m_values.get(c);
57 |     }
58 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/java/toolgood/words/internals/TwoTuple.java:
--------------------------------------------------------------------------------
 1 | package toolgood.words.internals;
 2 | 
 3 | public class TwoTuple<A, B> {
 4 |     public A Item1;
 5 |     public B Item2;
 6 | 
 7 |     public TwoTuple(A a, B b) {
 8 |         this.Item1 = a;
 9 |         this.Item2 = b;
10 |     }
11 | }


--------------------------------------------------------------------------------
/java/toolgood.words/src/main/resources/t2hk.dat:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 兌	兑
 3 | 叄	叁
 4 | 只	只
 5 | 啓	啓
 6 | 喫	吃
 7 | 囪	囱
 8 | 妝	妝
 9 | 媼	媪
10 | 嬀	媯
11 | 悅	悦
12 | 慍	愠
13 | 戶	户
14 | 挩	捝
15 | 搵	揾
16 | 擡	抬
17 | 敓	敚
18 | 敘	敍
19 | 柺	枴
20 | 梲	棁
21 | 棱	稜
22 | 榲	榅
23 | 檯	枱
24 | 氳	氲
25 | 涗	涚
26 | 溫	温
27 | 溼	濕
28 | 潙	溈
29 | 潨	潀
30 | 熅	煴
31 | 爲	為
32 | 癡	痴
33 | 皁	皂
34 | 祕	秘
35 | 稅	税
36 | 竈	灶
37 | 糉	粽
38 | 縕	緼
39 | 纔	才
40 | 脣	唇
41 | 脫	脱
42 | 膃	腽
43 | 臥	卧
44 | 臺	台
45 | 菸	煙
46 | 蒕	蒀
47 | 蔥	葱
48 | 蔿	蒍
49 | 蘊	藴
50 | 蛻	蜕
51 | 衆	眾
52 | 衛	衞
53 | 覈	核
54 | 說	説
55 | 踊	踴
56 | 轀	輼
57 | 醞	醖
58 | 鉢	缽
59 | 鉤	鈎
60 | 銳	鋭
61 | 鍼	針
62 | 閱	閲
63 | 鰮	鰛
64 | 一口吃個	一口喫個
65 | 一口吃成	一口喫成
66 | 介胄	介冑
67 | 免胄	免冑
68 | 冠胄	冠冑
69 | 南涌	南涌
70 | 吃口	喫口
71 | 吃吃	喫喫
72 | 吃子	喫子
73 | 壓胄子	壓冑子
74 | 大欖涌	大欖涌
75 | 大涌	大涌
76 | 懸胄	懸冑
77 | 東涌	東涌
78 | 沙魚涌	沙魚涌
79 | 河涌	河涌
80 | 泥涌	泥涌
81 | 涌尾	涌尾
82 | 深涌	深涌
83 | 溪涌	溪涌
84 | 甲胄	甲冑
85 | 胄甲	冑甲
86 | 胄科	冑科
87 | 葵涌	葵涌
88 | 蠔涌	蠔涌
89 | 西涌	西涌
90 | 貝胄	貝冑
91 | 鎧胄	鎧冑
92 | 韓侂胄	韓侂冑
93 | 飮胄	飮冑
94 | 魚胄	魚冑
95 | 鰂魚涌	鰂魚涌
96 | 麻涌	麻涌
97 | 黎涌	黎涌


--------------------------------------------------------------------------------
/javascript/README.MD:
--------------------------------------------------------------------------------
 1 | ToolGood.Words(Js版本)
 2 | ==================
 3 | 一款高性能非法词(敏感词)检测组件,繁体简体互换,获取拼音首字母,获取拼音字母等功能。
 4 | 
 5 | 文件说明:
 6 | ```
 7 | ToolGood.Words.Pinyin.js        拼音转化
 8 | ToolGood.Words.Translate.js     繁体简体转化
 9 | ToolGood.Words.StringSearch.js  字符串检索
10 | ToolGood.Words.WordsSearch.js   字符串检索,包含位置信息、索引
11 | ```
12 | 
13 | ### 拼音操作
14 | ``` javascript
15 |     var pinyin = new Pinyin();
16 |     // 获取全拼
17 |     pinyin.GetPinyin("我爱中国");//WoAiZhongGuo
18 |     pinyin.GetPinyin("我爱中国",true);//WǒÀiZhōngGuó
19 |     // 获取首字母
20 |     pinyin.GetFirstPinyin("我爱中国");//WAZG
21 |     // 获取全部拼音
22 |     pinyin.GetAllPinyin('传');//Chuan,Zhuan
23 |     // 获取姓名
24 |     pinyin.GetPinyinForName("单一一")//ShanYiYi
25 |     pinyin.GetPinyinForName("单一一",true)//ShànYīYī
26 | ```
27 | 
28 | ### 繁体简体互换
29 | ``` javascript
30 |     var translate = new Translate();
31 |     // 转成简体
32 |     translate.ToSimplifiedChinese("我愛中國");
33 |     translate.ToSimplifiedChinese("我愛中國",1);// 港澳繁体 转 简体
34 |     translate.ToSimplifiedChinese("我愛中國",2);// 台湾正体 转 简体
35 |     // 转成繁体
36 |     translate.ToTraditionalChinese("我爱中国");
37 |     translate.ToTraditionalChinese("我爱中国",1);// 简体 转 港澳繁体
38 |     translate.ToTraditionalChinese("我爱中国",2);// 简体 转 台湾正体
39 | ```
40 | 
41 | ### 字符串检测
42 | ``` javascript
43 |     string s = "中国|国人|zg人";
44 |     string test = "我是中国人";
45 |     var search = new WordsSearch();// 或  var search = new StringSearch();
46 |     wordsSearch.SetKeywords(s.split('|'));
47 | 
48 |     // 查找第一个匹配
49 |     var f = search.FindFirst(test);
50 |     // 查找所有匹配
51 |     var all = search.FindAll(test);
52 |     // 检查是否有匹配
53 |     var b = search.ContainsAny(test);
54 |     // 替换所有匹配
55 |     var str = search.Replace(test, '*');
56 | ```
57 | 


--------------------------------------------------------------------------------
/javascript/ToolGood.Words.StringSearch.min.js:
--------------------------------------------------------------------------------
1 | // ToolGood.Words.StringSearch.js
2 | // 2020, Lin Zhijun, https://github.com/toolgood/ToolGood.Words
3 | // Licensed under the Apache License 2.0
4 | // 更新日志
5 | // 2020.05.17 修改,支持大于0xffff的字符
6 | function StringSearch(){function n(){this.Layer=this.Index=0;this.End=!1;this.Char="";this.Results=[];this.m_values={};this.Parent=this.Failure=null;this.Add=function(c){if(null!=this.m_values[c])return this.m_values[c];var a=new n;a.Parent=this;a.Char=c;return this.m_values[c]=a};this.SetResults=function(c){0==this.End&&(this.End=!0);this.Results.push(c)}}function p(){this.End=!1;this.Results=[];this.m_values={};this.minflag=65535;this.maxflag=0;this.Add=function(c,a){this.minflag>c&&(this.minflag=c);this.maxflag<c&&(this.maxflag=c);this.m_values[c]=a};this.SetResults=function(c){0==this.End&&(this.End=!0);-1==this.Results.indexOf(c)&&this.Results.push(c)};this.HasKey=function(c){return void 0!=this.m_values[c]};this.TryGetValue=function(c){return this.minflag<=c&&this.maxflag>=c?this.m_values[c]:null}}var h=[],m=[];this.SetKeywords=function(c){m=c;c=new n;for(var a={},d=0;d<m.length;d++){for(var e=m[d],b=c,f=0;f<e.length;f++)b=b.Add(e.charCodeAt(f)),0==b.Layer&&(b.Layer=f+1,a[b.Layer]||(a[b.Layer]=[]),a[b.Layer].push(b));b.SetResults(d)}e=[];e.push(c);for(var g in a)for(b=a[g],d=0;d<b.length;d++)e.push(b[d]);for(d=1;d<e.length;d++){b=e[d];b.Index=d;a=b.Parent.Failure;for(f=b.Char;null!=a&&!a.m_values[f];)a=a.Failure;if(null==a)b.Failure=c;else{b.Failure=a.m_values[f];for(var k in b.Failure.Results)0!=b.Failure.Results.hasOwnProperty(k)&&b.SetResults(b.Failure.Results[k])}}c.Failure=c;k=[];for(d=0;d<e.length;d++)k.push(new p);for(d=0;d<k.length;d++){b=e[d];a=k[d];for(g in b.m_values)0!=b.m_values.hasOwnProperty(g)&&(f=b.m_values[g].Index,a.Add(g,k[f]));for(var l=0;l<b.Results.length;l++)f=b.Results[l],a.SetResults(f);for(b=b.Failure;b!=c;){for(g in b.m_values)0!=b.m_values.hasOwnProperty(g)&&0==a.HasKey(g)&&(f=b.m_values[g].Index,a.Add(g,k[f]));for(l=0;l<b.Results.length;l++)f=b.Results[l],a.SetResults(f);b=b.Failure}}h=k[0]};this.FindFirst=function(c){for(var a=null,d=0;d<c.length;d++){var e=c.charCodeAt(d);null==a?a=h.TryGetValue(e):(a=a.TryGetValue(e))||(a=h.TryGetValue(e));if(null!=a&&a.End)return m[a.Results[0]]}return null};this.FindAll=function(c){for(var a=null,d=[],e=0;e<c.length;e++){var b=c.charCodeAt(e);null==a?a=h.TryGetValue(b):(a=a.TryGetValue(b))||(a=h.TryGetValue(b));if(null!=a&&a.End)for(b=0;b<a.Results.length;b++)d.push(m[a.Results[b]])}return d};this.ContainsAny=function(c){for(var a=null,d=0;d<c.length;d++){var e=c.charCodeAt(d);null==a?a=h.TryGetValue(e):(a=a.TryGetValue(e))||(a=h.TryGetValue(e));if(null!=a&&a.End)return!0}return!1};this.Replace=function(c,a){void 0==a&&(a="*");for(var d=c.split(""),e=null,b=0;b<c.length;b++){var f=c.charCodeAt(b);null==e?e=h.TryGetValue(f):(e=e.TryGetValue(f))||(e=h.TryGetValue(f));if(null!=e&&e.End)for(f=b+1-m[e.Results[0]].length;f<=b;f++)d[f]=a}return d.join("")}};


--------------------------------------------------------------------------------
/javascript/ToolGood.Words.WordsSearch.min.js:
--------------------------------------------------------------------------------
1 | // ToolGood.Words.WordsSearch.js
2 | // 2020, Lin Zhijun, https://github.com/toolgood/ToolGood.Words
3 | // Licensed under the Apache License 2.0
4 | // 更新日志
5 | // 2020.05.17 修改,支持大于0xffff的字符
6 | function WordsSearch(){function p(){this.Layer=this.Index=0;this.End=!1;this.Char="";this.Results=[];this.m_values={};this.Parent=this.Failure=null;this.Add=function(c){if(null!=this.m_values[c])return this.m_values[c];var a=new p;a.Parent=this;a.Char=c;return this.m_values[c]=a};this.SetResults=function(c){0==this.End&&(this.End=!0);this.Results.push(c)}}function q(){this.End=!1;this.Results=[];this.m_values={};this.minflag=65535;this.maxflag=0;this.Add=function(c,a){"number"!==typeof c&&(c=parseInt(c));this.minflag>c&&(this.minflag=c);this.maxflag<c&&(this.maxflag=c);this.m_values[c]=a};this.SetResults=function(c){0==this.End&&(this.End=!0);-1==this.Results.indexOf(c)&&this.Results.push(c)};this.HasKey=function(c){return void 0!=this.m_values[c]};this.TryGetValue=function(c){return this.minflag<=c&&this.maxflag>=c?this.m_values[c]:null}}var h={},l=[],n=[];this.SetKeywords=function(c){l=c;for(var a=0;a<c.length;a++)n.push(a);c=new p;for(var d={},a=0;a<l.length;a++){for(var e=l[a],b=c,f=0;f<e.length;f++)b=b.Add(e.charCodeAt(f)),0==b.Layer&&(b.Layer=f+1,d[b.Layer]||(d[b.Layer]=[]),d[b.Layer].push(b));b.SetResults(a)}e=[];e.push(c);for(var g in d)for(b=d[g],a=0;a<b.length;a++)e.push(b[a]);for(a=1;a<e.length;a++){b=e[a];b.Index=a;d=b.Parent.Failure;for(f=b.Char;null!=d&&!d.m_values[f];)d=d.Failure;if(null==d)b.Failure=c;else{b.Failure=d.m_values[f];for(var k in b.Failure.Results)0!=b.Failure.Results.hasOwnProperty(k)&&b.SetResults(b.Failure.Results[k])}}c.Failure=c;k=[];for(a=0;a<e.length;a++)k.push(new q);for(a=0;a<k.length;a++){b=e[a];d=k[a];for(g in b.m_values)0!=b.m_values.hasOwnProperty(g)&&(f=b.m_values[g].Index,d.Add(g,k[f]));for(var m=0;m<b.Results.length;m++)f=b.Results[m],d.SetResults(f);for(b=b.Failure;b!=c;){for(g in b.m_values)0!=b.m_values.hasOwnProperty(g)&&0==d.HasKey(g)&&(f=b.m_values[g].Index,d.Add(g,k[f]));for(m=0;m<b.Results.length;m++)f=b.Results[m],d.SetResults(f);b=b.Failure}}h=k[0]};this.FindFirst=function(c){for(var a=null,d=0;d<c.length;d++){var e=c.charCodeAt(d);null==a?a=h.TryGetValue(e):(a=a.TryGetValue(e))||(a=h.TryGetValue(e));if(null!=a&&a.End)return c=a.Results[0],{Keyword:l[c],Success:!0,End:d,Start:d+1-l[c].length,Index:n[c]}}return null};this.FindAll=function(c){for(var a=null,d=[],e=0;e<c.length;e++){var b=c.charCodeAt(e);null==a?a=h.TryGetValue(b):(a=a.TryGetValue(b))||(a=h.TryGetValue(b));if(null!=a&&a.End)for(b=0;b<a.Results.length;b++){var f=a.Results[b];d.push({Keyword:l[f],Success:!0,End:e,Start:e+1-l[f].length,Index:n[f]})}}return d};this.ContainsAny=function(c){for(var a=null,d=0;d<c.length;d++){var e=c.charCodeAt(d);null==a?a=h.TryGetValue(e):(a=a.TryGetValue(e))||(a=h.TryGetValue(e));if(null!=a&&a.End)return!0}return!1};this.Replace=function(c,a){void 0==a&&(a="*");for(var d=c.split(""),e=null,b=0;b<c.length;b++){var f=c.charCodeAt(b);null==e?e=h.TryGetValue(f):(e=e.TryGetValue(f))||(e=h.TryGetValue(f));if(null!=e&&e.End)for(f=b+1-l[e.Results[0]].length;f<=b;f++)d[f]=a}return d.join("")}};


--------------------------------------------------------------------------------
/支撑压力指标/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/支撑压力指标/0.png


--------------------------------------------------------------------------------
/支撑压力指标/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/支撑压力指标/1.png


--------------------------------------------------------------------------------
/支撑压力指标/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/支撑压力指标/2.png


--------------------------------------------------------------------------------
/支撑压力指标/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/支撑压力指标/3.png


--------------------------------------------------------------------------------
/支撑压力指标/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/支撑压力指标/4.png


--------------------------------------------------------------------------------
/支撑压力指标/readme.md:
--------------------------------------------------------------------------------
 1 | 
 2 | ## 支撑压力指标 -- 股票博弈论
 3 | 
 4 | 
 5 | 很多人喜欢均线指标,依据价格围绕价值上下波动理论,低于均价购入给人一种买值了的感觉。
 6 | 
 7 | 
 8 | 很多人喜欢BOLL指标,因为BOLL指标基础核心是标准差,标准差是数学中非常可靠的理论。靠近BOLL下轨的股票安全很高。
 9 | 
10 | 
11 | 使用均线、BOLL指标的人思路,他们**投资在乎安全,价格离均价越远,超买超卖,反转机率越高。**
12 | 
13 | 当一个观念深入人心时,就会被利用,如抽取前几日的样本很容易被人为干扰,不符合抽样条件。
14 | 
15 | 
16 | 股票一个基础概念,交易由买卖双方构成。每个人入股市都是想赚钱的,有人高位卖出,必有人高点买入;有人低位买入,必有人低位割肉卖出,有人赚钱必有人亏钱,这就是博弈。所以**我们进入股市时,应将与市场所有参与者视为对手。**
17 | 
18 | 
19 | 确立对手后,然后去找一条打败对手的方案。**股票是一个以价格为博弈的战场,谁的成本价底,谁的优势就大。** 所以我们得计算出对手的成本价,**低于对手成本价买入,这样就有成本优势了。**
20 | 
21 | 
22 | 有了成本优势,下一步我们应将成本优势最大化,**底部拐点是最好的买点。**
23 | 
24 | 思考一下为何有拐点,拐点意味什么?
25 | 
26 | **我的猜测,拐点是主力成本价(或预设底价),当价格低于主力成本价时,主力是不会让散户捡到廉价的筹码,所以会产生支撑。**
27 | 
28 | 
29 | 到此处,我们有了两个价格,一个对手的成本价,一个主力的成本价。
30 | 
31 | 
32 | 采用BOLL指标上下轨模式,结合中国股市牛短熊长特征和博弈论思想,设定如下:
33 | * 1、上轨设为对手的成本价。由于对手众多,只能算均价。均价不是均线,均价可以通过算法累计股价和成交量算出。
34 | * 2、下轨设为主力的成本价。庄家不会让散户捡到廉价的筹码。通过算法累计最低价,可以计算出庄家的成本价。
35 | * 3、中轨=(上轨+下轨)/2。
36 | * 4、上轨上方还要设置两轨。由于上轨为对手的均价,技术差的散户成本价在上轨的上方。
37 | * 5、下轨下方也要设置两轨。当行情不好时,庄家不会为行情兜底,割血的筹码才是他们想要的。
38 | 
39 | 为了方便好记,将7条轨道重新命名,从上到下依次是:大顶、中顶、小顶、中线、小底、中底、大底。
40 | 
41 | ![股票指标演示](0.png)
42 | 
43 | 中国股市牛短熊长,所以对于多数个股趋势判断非常有效。
44 | 
45 | 数据统计证明:2022年7月至2023年10月中旬,沪深A股,交易日大于250天,总共4779只,4126只股票能复现买入卖出点,占86.34%。
46 | 
47 | 
48 | **缺点,小顶采用的是对手均价,牛市时无法准确判断顶部,无法判断连续涨停的股票。**
49 | 本指标是一个短线指标。
50 | 
51 | 
52 | 
53 | 以下是好指标评判标准,总记100分:
54 | * 1、指标不能有未来函数;(10分)
55 | * 2、指标设计原理要有可靠的底层逻辑,并能阐述其不足之处;(20分)
56 | * 3、指标能够反馈出经济(股价)规律,如价格与价值关系,价格围绕价值上下波动;(20分)
57 | * 4、指标简单,清晰可见,能看股价趋势,上升高弱;(20分)
58 | * 5、指标有能够预判顶部和底部,有数据统计支撑,成功率在85%以上;(20分)
59 | * 6、指标符合自己的操作习惯,补足自身缺点;(10分)
60 | 
61 | 
62 | 我的评分是85分
63 | * 1、无未来函数,10分
64 | * 2、有可行的底层逻辑,并且能知晓不足,20分
65 | * 3、指标够反馈出股价规律,20分
66 | * 4、指标最多7条线,清晰可见,能看股价趋势,15分
67 | * 5、对一些牛股、连板股无法预测顶部,但有数据统计支撑,15分
68 | * 6、实战中指标还需要结合大行情、成交量、筹码等指标,5分
69 | 
70 | ------------------------
71 | 出售阻力支撑指标,398元一年,998元三年,10000元永久。
72 | 
73 | 阻力支撑指标无未来函数,有涉及财务报表数据,免费体验60天。
74 | 
75 | 无丰富交易经验人员勿买。
76 | 
77 | 
78 | 百度网盘下载:https://pan.baidu.com/s/13IkFYcnOuu_jpvpEaf_7gA?pwd=d6qc
79 | 
80 | 网址:https://stock.toolgood.com
81 | 
82 | ------------------------
83 | 
84 | ![股票指标演示](1.png)
85 | 
86 | ![股票指标演示](2.png)
87 | 
88 | ![股票指标演示](3.png)
89 | 
90 | ![股票指标演示](4.png)


--------------------------------------------------------------------------------
/资源包生成器/dict/HKVariants.txt:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 兌	兑
 3 | 叄	叁
 4 | 只	只 衹
 5 | 啓	啓 啟
 6 | 喫	吃
 7 | 囪	囱
 8 | 妝	妝 粧
 9 | 媼	媪
10 | 嬀	媯
11 | 悅	悦
12 | 慍	愠
13 | 戶	户
14 | 挩	捝
15 | 搵	揾
16 | 擡	抬
17 | 敓	敚
18 | 敘	敍 敘
19 | 柺	枴
20 | 梲	棁
21 | 棱	稜 棱
22 | 榲	榅
23 | 檯	枱
24 | 氳	氲
25 | 涗	涚
26 | 溫	温
27 | 溼	濕
28 | 潙	溈
29 | 潨	潀
30 | 熅	煴
31 | 爲	為
32 | 癡	痴
33 | 皁	皂
34 | 祕	秘
35 | 稅	税
36 | 竈	灶
37 | 糉	粽 糉 糭
38 | 縕	緼
39 | 纔	才
40 | 脣	唇
41 | 脫	脱
42 | 膃	腽
43 | 臥	卧
44 | 臺	台
45 | 菸	煙
46 | 蒕	蒀
47 | 蔥	葱
48 | 蔿	蒍
49 | 蘊	藴
50 | 蛻	蜕
51 | 衆	眾
52 | 衛	衞
53 | 覈	核
54 | 說	説
55 | 踊	踴
56 | 轀	輼
57 | 醞	醖
58 | 鉢	缽
59 | 鉤	鈎
60 | 銳	鋭
61 | 鍼	針
62 | 閱	閲
63 | 鰮	鰛
64 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/HKVariantsPhrases.txt:
--------------------------------------------------------------------------------
 1 | 南涌	南涌
 2 | 大欖涌	大欖涌
 3 | 大涌	大涌
 4 | 東涌	東涌
 5 | 沙河涌	沙河涌
 6 | 沙魚涌	沙魚涌
 7 | 河涌	河涌
 8 | 泥涌	泥涌
 9 | 涌尾	涌尾
10 | 深涌	深涌
11 | 溪涌	溪涌
12 | 葵涌	葵涌
13 | 蠔涌	蠔涌
14 | 西涌	西涌
15 | 鰂魚涌	鰂魚涌
16 | 麻涌	麻涌
17 | 黎涌	黎涌
18 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/HKVariantsRevPhrases.txt:
--------------------------------------------------------------------------------
  1 | 一口吃個	一口喫個
  2 | 一口吃成	一口喫成
  3 | 一家三口	一家三口
  4 | 一家五口	一家五口
  5 | 一家六口	一家六口
  6 | 一家四口	一家四口
  7 | 七星巖	七星巖
  8 | 世胄	世胄
  9 | 介胄	介冑
 10 | 傅巖	傅巖
 11 | 免胄	免冑
 12 | 冠胄	冠冑
 13 | 千巖競秀	千巖競秀
 14 | 千巖萬壑	千巖萬壑
 15 | 千巖萬谷	千巖萬谷
 16 | 口吃	口吃
 17 | 台山	台山
 18 | 台州	台州
 19 | 台州地區	台州地區
 20 | 台州市	台州市
 21 | 吃口	喫口 吃口
 22 | 吃口令	吃口令
 23 | 吃口飯	喫口飯
 24 | 吃吃	喫喫 吃吃
 25 | 吃子	喫子 吃子
 26 | 名胄	名胄
 27 | 國胄	國胄
 28 | 圍巖	圍巖
 29 | 地胄	地胄
 30 | 壓胄子	壓冑子
 31 | 士胄	士胄
 32 | 大巖桐	大巖桐
 33 | 天台女	天台女
 34 | 天台宗	天台宗
 35 | 天台山	天台山
 36 | 天台縣	天台縣
 37 | 天潢貴胄	天潢貴胄
 38 | 奇巖	奇巖
 39 | 寶胄	寶胄
 40 | 小巖洞	小巖洞
 41 | 岫巖縣	岫巖縣
 42 | 峯巖	峯巖
 43 | 嵌巖	嵌巖
 44 | 巉巖	巉巖
 45 | 巖壁	巖壁
 46 | 巖居	巖居
 47 | 巖居穴處	巖居穴處
 48 | 巖居谷飲	巖居谷飲
 49 | 巖岸	巖岸
 50 | 巖巉	巖巉
 51 | 巖巖	巖巖
 52 | 巖徼	巖徼
 53 | 巖手縣	巖手縣
 54 | 巖村	巖村
 55 | 巖洞	巖洞
 56 | 巖流圈	巖流圈
 57 | 巖牆	巖牆
 58 | 巖牆之下	巖牆之下
 59 | 巖畫	巖畫
 60 | 巖穴	巖穴
 61 | 巖穴之士	巖穴之士
 62 | 巖薔薇	巖薔薇
 63 | 巖邑	巖邑
 64 | 巖郎	巖郎
 65 | 巖阻	巖阻
 66 | 巖陛	巖陛
 67 | 帝胄	帝胄
 68 | 幽巖	幽巖
 69 | 幽棲巖谷	幽棲巖谷
 70 | 張口	張口
 71 | 懸巖	懸巖
 72 | 懸巖峭壁	懸巖峭壁
 73 | 懸胄	懸冑
 74 | 攀巖	攀巖
 75 | 支胄	支胄
 76 | 教胄	教胄
 77 | 景胄	景胄
 78 | 望胄	望胄
 79 | 末胄	末胄
 80 | 村胄	村胄
 81 | 枕巖漱流	枕巖漱流
 82 | 枝胄	枝胄
 83 | 氏胄	氏胄
 84 | 洪胄	洪胄
 85 | 浙江天台縣	浙江天台縣
 86 | 清胄	清胄
 87 | 灰巖殘丘	灰巖殘丘
 88 | 玄胄	玄胄
 89 | 甲胄	甲冑
 90 | 甲胄魚類	甲冑魚類
 91 | 皇胄	皇胄
 92 | 石灰巖洞	石灰巖洞
 93 | 神胄	神胄
 94 | 簪纓世胄	簪纓世胄
 95 | 系胄	系胄
 96 | 紅巖	紅巖
 97 | 絕巖	絕巖
 98 | 緒胄	緒胄
 99 | 纂胄	纂胄
100 | 胃口	胃口
101 | 胄嗣	胄嗣
102 | 胄子	胄子
103 | 胄序	胄序
104 | 胄族	胄族
105 | 胄甲	冑甲
106 | 胄監	胄監
107 | 胄科	冑科
108 | 胄緒	胄緒
109 | 胄胤	胄胤
110 | 胄裔	胄裔
111 | 胄裔繁衍	胄裔繁衍
112 | 胄閥	胄閥
113 | 胡雪巖	胡雪巖
114 | 胤胄	胤胄
115 | 苗胄	苗胄
116 | 英胄	英胄
117 | 華胄	華胄
118 | 血胄	血胄
119 | 裔胄	裔胄
120 | 訓胄	訓胄
121 | 試胄	試胄
122 | 豪門貴胄	豪門貴胄
123 | 貝胄	貝冑
124 | 貴胄	貴胄
125 | 賢胄	賢胄
126 | 蹇吃	蹇吃
127 | 躬擐甲胄	躬擐甲冑
128 | 遐胄	遐胄
129 | 遙胄	遙胄
130 | 遙遙華胄	遙遙華胄
131 | 遠胄	遠胄
132 | 遺胄	遺胄
133 | 鄧艾吃	鄧艾吃
134 | 重巖疊嶂	重巖疊嶂
135 | 金胄	金胄
136 | 鎧胄	鎧冑
137 | 鑿巖	鑿巖
138 | 門胄	門胄
139 | 開口	開口
140 | 雲巖區	雲巖區
141 | 非層巖	非層巖
142 | 韓侂胄	韓侂冑
143 | 飮胄	飮冑
144 | 骨巖巖	骨巖巖
145 | 高胄	高胄
146 | 魚胄	魚冑
147 | 鮮胄	鮮胄
148 | 鴻胄	鴻胄
149 | 黃巖區	黃巖區
150 | 黃巖島	黃巖島
151 | 黃炎貴胄	黃炎貴胄
152 | 齒胄	齒胄
153 | 龍巖	龍巖
154 | 龍巖市	龍巖市
155 | 龍巖村	龍巖村
156 | 龍胄	龍胄
157 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/JPShinjitaiCharacters.txt:
--------------------------------------------------------------------------------
1 | 両	兩 輛
2 | 弁	辨 辯 瓣 辦 弁
3 | 御	御 禦
4 | 欠	缺 欠
5 | 糸	絲 糸
6 | 芸	藝 芸
7 | 浜	濱 浜
8 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/JPShinjitaiPhrases.txt:
--------------------------------------------------------------------------------
  1 | 一獲千金	一攫千金
  2 | 丁寧	叮嚀
  3 | 丁重	鄭重
  4 | 三差路	三叉路
  5 | 世論	輿論
  6 | 亜鈴	啞鈴
  7 | 交差	交叉
  8 | 供宴	饗宴
  9 | 俊馬	駿馬
 10 | 保塁	堡壘
 11 | 個条書	箇条書
 12 | 偏平	扁平
 13 | 停泊	碇泊
 14 | 優俊	優駿
 15 | 先兵	尖兵
 16 | 先鋭	尖鋭
 17 | 共役	共軛
 18 | 冗舌	饒舌
 19 | 凶器	兇器
 20 | 削岩	鑿岩
 21 | 包丁	庖丁
 22 | 包帯	繃帯
 23 | 区画	區劃
 24 | 厳然	儼然
 25 | 友宜	友誼
 26 | 反乱	叛乱
 27 | 収集	蒐集
 28 | 叙情	抒情
 29 | 台頭	擡頭
 30 | 合弁	合辦
 31 | 喜遊曲	嬉遊曲
 32 | 嘆願	歎願
 33 | 回転	廻転
 34 | 回遊	回游
 35 | 奉持	捧持
 36 | 委縮	萎縮
 37 | 展転	輾轉
 38 | 希少	稀少
 39 | 幻惑	眩惑
 40 | 広範	廣汎
 41 | 広野	曠野
 42 | 廃虚	廢墟
 43 | 建坪率	建蔽率
 44 | 弁当	辨當
 45 | 弁膜	瓣膜
 46 | 弁護	辯護
 47 | 弁髪	辮髮
 48 | 弦歌	絃歌
 49 | 恩義	恩誼
 50 | 意向	意嚮
 51 | 慰謝料	慰藉料
 52 | 憶断	臆断
 53 | 憶病	臆病
 54 | 戦没	戰歿
 55 | 扇情	煽情
 56 | 手帳	手帖
 57 | 技量	伎倆
 58 | 抜粋	抜萃
 59 | 披歴	披瀝
 60 | 抵触	牴触
 61 | 抽選	抽籤
 62 | 拘引	勾引
 63 | 拠出	醵出
 64 | 拠金	醵金
 65 | 掘削	掘鑿
 66 | 控除	扣除
 67 | 援護	掩護
 68 | 放棄	抛棄
 69 | 散水	撒水
 70 | 敬謙	敬虔
 71 | 敷延	敷衍
 72 | 断固	断乎
 73 | 族生	簇生
 74 | 昇叙	陞敘
 75 | 暖房	煖房
 76 | 暗唱	暗誦
 77 | 暗夜	闇夜
 78 | 暴露	曝露
 79 | 枯渇	涸渇
 80 | 格好	恰好
 81 | 格幅	恰幅
 82 | 棄損	毀損
 83 | 模索	摸索
 84 | 橋頭保	橋頭堡
 85 | 欠缺	欠缺
 86 | 死体	屍體
 87 | 殿部	臀部
 88 | 母指	拇指
 89 | 気迫	気魄
 90 | 決別	訣別
 91 | 決壊	決潰
 92 | 沈殿	沈澱
 93 | 油送船	油槽船
 94 | 波乱	波瀾
 95 | 注釈	註釋
 96 | 洗浄	洗滌 洗浄
 97 | 活発	活潑
 98 | 浸透	滲透
 99 | 浸食	浸蝕
100 | 消却	銷卻
101 | 混然	渾然
102 | 湾曲	彎曲
103 | 溶接	熔接
104 | 漁労	漁撈
105 | 漂然	飄然
106 | 激高	激昂
107 | 火炎	火焰
108 | 焦燥	焦躁
109 | 班点	斑点
110 | 留飲	溜飲
111 | 略奪	掠奪
112 | 疎通	疏通
113 | 発酵	醱酵
114 | 白亜	白堊
115 | 相克	相剋
116 | 知恵	智慧
117 | 破棄	破毀
118 | 確固	確乎
119 | 禁固	禁錮
120 | 符丁	符牒
121 | 粉装	扮装
122 | 紫班	紫斑
123 | 終息	終熄
124 | 総合	綜合
125 | 編集	編輯
126 | 義援	義捐
127 | 耕運機	耕耘機
128 | 肝心	肝腎
129 | 肩甲骨	肩胛骨
130 | 背徳	悖德
131 | 脈拍	脈搏
132 | 膨張	膨脹
133 | 芳純	芳醇
134 | 英知	叡智
135 | 蒸留	蒸溜
136 | 薫蒸	燻蒸
137 | 薫製	燻製
138 | 衣装	衣裳
139 | 衰退	衰退 衰頽
140 | 裕然	悠然
141 | 補佐	輔佐
142 | 訓戒	訓誡
143 | 試練	試煉
144 | 詭弁	詭辯
145 | 講和	媾和
146 | 象眼	象嵌
147 | 貫録	貫禄
148 | 買弁	買辦
149 | 賛辞	讚辭
150 | 踏襲	蹈襲
151 | 車両	車輛
152 | 転倒	顛倒
153 | 輪郭	輪廓
154 | 退色	褪色
155 | 途絶	杜絶
156 | 連係	連繫
157 | 連合	聯合
158 | 選考	銓衡
159 | 酢酸	醋酸
160 | 野卑	野鄙
161 | 鉱石	礦石
162 | 間欠	間歇
163 | 関数	函數
164 | 防御	防禦
165 | 険阻	嶮岨
166 | 障壁	牆壁
167 | 障害	障礙
168 | 隠滅	湮滅
169 | 集落	聚落
170 | 雇用	雇傭
171 | 風諭	諷喩
172 | 飛語	蜚語
173 | 香典	香奠
174 | 骨格	骨骼
175 | 高進	亢進
176 | 鳥観	鳥瞰
177 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/JPVariants.txt:
--------------------------------------------------------------------------------
  1 | 乘	乗
  2 | 亂	乱
  3 | 亙	亘
  4 | 亞	亜
  5 | 佛	仏
  6 | 來	来
  7 | 假	仮
  8 | 傳	伝
  9 | 僞	偽
 10 | 價	価
 11 | 儉	倹
 12 | 兒	児
 13 | 內	内
 14 | 兩	両
 15 | 剎	刹
 16 | 剩	剰
 17 | 劍	剣
 18 | 劑	剤
 19 | 勞	労
 20 | 勳	勲
 21 | 勵	励
 22 | 勸	勧
 23 | 勻	匀
 24 | 區	区
 25 | 卷	巻
 26 | 卻	却
 27 | 參	参
 28 | 吳	呉
 29 | 咒	呪
 30 | 啞	唖
 31 | 單	単
 32 | 噓	嘘
 33 | 嚙	噛
 34 | 嚴	厳
 35 | 囑	嘱
 36 | 圈	圏
 37 | 國	国
 38 | 圍	囲
 39 | 圓	円
 40 | 圖	図
 41 | 團	団
 42 | 增	増
 43 | 墮	堕
 44 | 壓	圧
 45 | 壘	塁
 46 | 壞	壊
 47 | 壤	壌
 48 | 壯	壮
 49 | 壹	壱
 50 | 壽	寿
 51 | 奧	奥
 52 | 奬	奨
 53 | 妝	粧
 54 | 孃	嬢
 55 | 學	学
 56 | 寢	寝
 57 | 實	実
 58 | 寫	写
 59 | 寬	寛
 60 | 寶	宝
 61 | 將	将
 62 | 專	専
 63 | 對	対
 64 | 屆	届
 65 | 屬	属
 66 | 峯	峰
 67 | 峽	峡
 68 | 嶽	岳
 69 | 巖	巌
 70 | 巢	巣
 71 | 帶	帯
 72 | 廁	厠
 73 | 廢	廃
 74 | 廣	広
 75 | 廳	庁
 76 | 彈	弾
 77 | 彌	弥
 78 | 彎	弯
 79 | 彥	彦
 80 | 徑	径
 81 | 從	従
 82 | 徵	徴
 83 | 德	徳
 84 | 恆	恒
 85 | 悅	悦
 86 | 惠	恵
 87 | 惡	悪
 88 | 惱	悩
 89 | 慘	惨
 90 | 應	応
 91 | 懷	懐
 92 | 戀	恋
 93 | 戰	戦
 94 | 戲	戯
 95 | 戶	戸
 96 | 戾	戻
 97 | 拂	払
 98 | 拔	抜
 99 | 拜	拝
100 | 挾	挟
101 | 插	挿
102 | 揭	掲
103 | 搔	掻
104 | 搖	揺
105 | 搜	捜
106 | 摑	掴
107 | 擇	択
108 | 擊	撃
109 | 擔	担
110 | 據	拠
111 | 擴	拡
112 | 攝	摂
113 | 攪	撹
114 | 收	収
115 | 效	効
116 | 敕	勅
117 | 敘	叙
118 | 數	数
119 | 斷	断
120 | 晉	晋
121 | 晚	晩
122 | 晝	昼
123 | 暨	曁
124 | 曆	暦
125 | 曉	暁
126 | 曾	曽
127 | 會	会
128 | 枡	桝
129 | 查	査
130 | 條	条
131 | 棧	桟
132 | 棱	稜 棱
133 | 榆	楡
134 | 榮	栄
135 | 樂	楽
136 | 樓	楼
137 | 樞	枢
138 | 樣	様
139 | 橫	横
140 | 檢	検
141 | 櫻	桜
142 | 權	権
143 | 歐	欧
144 | 歡	歓
145 | 步	歩
146 | 歲	歳
147 | 歷	歴
148 | 歸	帰
149 | 殘	残
150 | 殼	殻
151 | 毆	殴
152 | 每	毎
153 | 氣	気
154 | 污	汚
155 | 沒	没
156 | 涉	渉
157 | 淚	涙
158 | 淨	浄
159 | 淺	浅
160 | 渴	渇
161 | 潑	溌
162 | 溪	渓
163 | 溫	温
164 | 溼	湿
165 | 滯	滞
166 | 滿	満
167 | 潛	潜
168 | 澀	渋
169 | 澤	沢
170 | 濟	済
171 | 濤	涛
172 | 濱	浜
173 | 濾	沪
174 | 瀧	滝
175 | 瀨	瀬
176 | 灣	湾
177 | 焰	焔
178 | 燈	灯
179 | 燒	焼
180 | 營	営
181 | 爐	炉
182 | 爭	争
183 | 爲	為
184 | 牀	床
185 | 犧	犠
186 | 狀	状
187 | 狹	狭
188 | 獨	独
189 | 獵	猟
190 | 獸	獣
191 | 獻	献
192 | 瓣	弁
193 | 產	産
194 | 畫	画
195 | 當	当
196 | 疊	畳
197 | 疎	疏
198 | 痹	痺
199 | 瘦	痩
200 | 癡	痴
201 | 發	発
202 | 皋	皐
203 | 盜	盗
204 | 盡	尽
205 | 碎	砕
206 | 祕	秘
207 | 祿	禄
208 | 禦	御
209 | 禪	禅
210 | 禮	礼
211 | 禱	祷
212 | 稅	税
213 | 稱	称
214 | 稻	稲
215 | 穎	頴
216 | 穗	穂
217 | 穩	穏
218 | 穰	穣
219 | 竈	竃
220 | 竊	窃
221 | 粹	粋
222 | 糉	粽
223 | 絕	絶
224 | 絲	糸
225 | 經	経
226 | 綠	緑
227 | 緖	緒
228 | 緣	縁
229 | 縣	県
230 | 縱	縦
231 | 總	総
232 | 繫	繋
233 | 繡	繍
234 | 繩	縄
235 | 繪	絵
236 | 繼	継
237 | 續	続
238 | 纔	才
239 | 纖	繊
240 | 缺	欠
241 | 罐	缶
242 | 羣	群
243 | 聯	連
244 | 聰	聡
245 | 聲	声
246 | 聽	聴
247 | 肅	粛
248 | 脣	唇
249 | 脫	脱
250 | 腦	脳
251 | 腳	脚
252 | 膽	胆
253 | 臟	臓
254 | 臺	台
255 | 與	与
256 | 舉	挙
257 | 舊	旧
258 | 舍	舎
259 | 荔	茘
260 | 莊	荘
261 | 莖	茎
262 | 菸	煙
263 | 萊	莱
264 | 萬	万
265 | 蔣	蒋
266 | 蔥	葱
267 | 薰	薫
268 | 藏	蔵
269 | 藝	芸
270 | 藥	薬
271 | 蘆	芦
272 | 處	処
273 | 虛	虚
274 | 號	号
275 | 螢	蛍
276 | 蟲	虫
277 | 蠟	蝋
278 | 蠶	蚕
279 | 蠻	蛮
280 | 裝	装
281 | 覺	覚
282 | 覽	覧
283 | 觀	観
284 | 觸	触
285 | 說	説
286 | 謠	謡
287 | 證	証
288 | 譯	訳
289 | 譽	誉
290 | 讀	読
291 | 變	変
292 | 讓	譲
293 | 豐	豊
294 | 豫	予
295 | 貓	猫
296 | 貳	弐
297 | 賣	売
298 | 賴	頼
299 | 贊	賛
300 | 贗	贋
301 | 踐	践
302 | 輕	軽
303 | 輛	輌
304 | 轉	転
305 | 辨	弁
306 | 辭	辞
307 | 辯	弁
308 | 遞	逓
309 | 遥	遙
310 | 遲	遅
311 | 邊	辺
312 | 鄉	郷
313 | 酢	醋
314 | 醉	酔
315 | 醱	醗
316 | 醫	医
317 | 醬	醤
318 | 釀	醸
319 | 釋	釈
320 | 鋪	舗
321 | 錄	録
322 | 錢	銭
323 | 鍊	錬
324 | 鐵	鉄
325 | 鑄	鋳
326 | 鑛	鉱
327 | 閱	閲
328 | 關	関
329 | 陷	陥
330 | 隨	随
331 | 險	険
332 | 隱	隠
333 | 雙	双
334 | 雜	雑
335 | 雞	鶏
336 | 霸	覇
337 | 靈	霊
338 | 靜	静
339 | 顏	顔
340 | 顯	顕
341 | 餘	余
342 | 騷	騒
343 | 驅	駆
344 | 驗	験
345 | 驛	駅
346 | 髓	髄
347 | 體	体
348 | 髮	髪
349 | 鬥	闘
350 | 鱉	鼈
351 | 鷗	鴎
352 | 鹼	鹸
353 | 鹽	塩
354 | 麥	麦
355 | 麪	麺
356 | 麴	麹
357 | 黃	黄
358 | 黑	黒
359 | 默	黙
360 | 點	点
361 | 黨	党
362 | 齊	斉
363 | 齋	斎
364 | 齒	歯
365 | 齡	齢
366 | 龍	竜
367 | 龜	亀
368 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/STPhrases_Ext.txt:
--------------------------------------------------------------------------------
 1 | 干锅鸡	幹鍋雞
 2 | 干炒牛河	乾炒牛河
 3 | 松脆饼干	鬆脆餅乾
 4 | 干李子	乾李子
 5 | 干皮症	乾皮症
 6 | 不干燥	不乾燥
 7 | 数个	數箇
 8 | 多个	多箇
 9 | 一个	一箇
10 | 计算	計算
11 | 师范大学	師範大學


--------------------------------------------------------------------------------
/资源包生成器/dict/TSPhrases_Ext.txt:
--------------------------------------------------------------------------------
1 | 乾清宫	乾清宫


--------------------------------------------------------------------------------
/资源包生成器/dict/TWPhrasesName.txt:
--------------------------------------------------------------------------------
 1 | 乍得	查德
 2 | 也門	葉門
 3 | 仙童半導體	快捷半導體
 4 | 伯利茲	貝里斯
 5 | 佛得角	維德角
 6 | 傅里葉	傅立葉
 7 | 克羅地亞	克羅埃西亞
 8 | 列支敦士登	列支敦斯登
 9 | 利比里亞	賴比瑞亞
10 | 加納	迦納
11 | 加蓬	加彭
12 | 博茨瓦納	波札那
13 | 卡塔爾	卡達
14 | 危地馬拉	瓜地馬拉
15 | 厄瓜多爾	厄瓜多
16 | 厄立特里亞	厄利垂亞
17 | 吉布堤	吉布地
18 | 哈薩克斯坦	哈薩克
19 | 哥斯達黎加	哥斯大黎加
20 | 喫茶小舖	喫茶小舖
21 | 圖瓦盧	吐瓦魯
22 | 土庫曼斯坦	土庫曼
23 | 圭亞那	蓋亞那
24 | 坦桑尼亞	坦尚尼亞
25 | 埃塞俄比亞	衣索比亞
26 | 基里巴斯	吉里巴斯
27 | 塔吉克斯坦	塔吉克
28 | 塞拉利昂	獅子山
29 | 塞浦路斯	塞普勒斯
30 | 塞舌爾	塞席爾
31 | 多米尼加	多明尼加
32 | 安提瓜和巴布達	安地卡及巴布達
33 | 尼日利亞	奈及利亞
34 | 尼日爾	尼日
35 | 岡比亞	甘比亞
36 | 巴巴多斯	巴貝多
37 | 巴布亞新幾內亞	巴布亞紐幾內亞
38 | 布基納法索	布吉納法索
39 | 布隆迪	蒲隆地
40 | 帕勞	帛琉
41 | 幾內亞比紹	幾內亞比索
42 | 意大利	義大利
43 | 所羅門羣島	索羅門羣島
44 | 文萊	汶萊
45 | 斯威士蘭	史瓦濟蘭
46 | 斯洛文尼亞	斯洛維尼亞
47 | 新西蘭	紐西蘭
48 | 格林納達	格瑞那達
49 | 格魯吉亞	喬治亞
50 | 歐拉	尤拉
51 | 毛里塔尼亞	茅利塔尼亞
52 | 毛里求斯	模里西斯
53 | 沙特阿拉伯	沙烏地阿拉伯
54 | 波斯尼亞黑塞哥維那	波士尼亞赫塞哥維納
55 | 津巴布韋	辛巴威
56 | 洪都拉斯	宏都拉斯
57 | 溫納圖萬	那杜
58 | 烏茲別克斯坦	烏茲別克
59 | 特立尼達和多巴哥	千里達及托巴哥
60 | 瑙魯	諾魯
61 | 瓦努阿圖	萬那杜
62 | 盧旺達	盧安達
63 | 科摩羅	葛摩
64 | 科特迪瓦	象牙海岸
65 | 突尼斯	突尼西亞
66 | 純喫茶	純喫茶
67 | 索馬里	索馬利亞
68 | 老撾	寮國
69 | 聖基茨和尼維斯	聖克里斯多福及尼維斯
70 | 聖文森特和格林納丁斯	聖文森及格瑞那丁
71 | 聖盧西亞	聖露西亞
72 | 聖馬力諾	聖馬利諾
73 | 肯尼亞	肯亞
74 | 莫桑比克	莫三比克
75 | 萊索托	賴索托
76 | 萬象	永珍
77 | 蘇里南	蘇利南
78 | 貝寧	貝南
79 | 贊比亞	尚比亞
80 | 阿塞拜疆	亞塞拜然
81 | 阿拉伯聯合酋長國	阿拉伯聯合大公國
82 | 香農	夏農
83 | 馬爾代夫	馬爾地夫
84 | 馬里共和國	馬利共和國
85 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/TWPhrasesOther.txt:
--------------------------------------------------------------------------------
 1 | 元音	母音
 2 | 冰棍	冰棒
 3 | 出租車	計程車
 4 | 咖喱	咖哩
 5 | 塑料	塑膠
 6 | 奔馳	賓士
 7 | 奶酪	乳酪
 8 | 幾率	機率
 9 | 方便麪	泡麵 速食麵
10 | 李彥宏	李彥宏
11 | 概率	機率
12 | 海內存知己	海內存知己
13 | 涼菜	冷盤
14 | 的士	計程車
15 | 砹	砈
16 | 硅	矽
17 | 程序不正義	程序不正義
18 | 程序正義	程序正義
19 | 空氣淨化器	空氣清淨機
20 | 納米	奈米
21 | 自行車	腳踏車
22 | 詞組	片語
23 | 蹦極	高空彈跳
24 | 輔音	子音
25 | 通過	透過 通過
26 | 酰	醯
27 | 鈁	鍅
28 | 鈈	鈽
29 | 錇	鉳
30 | 鍀	鎝
31 | 鎄	鑀
32 | 鎇	鋂
33 | 鎿	錼
34 | 鐦	鉲
35 | 鑥	鎦
36 | 黃宏	黃宏
37 | 借記卡	簽帳金融卡
38 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/TWVariants.txt:
--------------------------------------------------------------------------------
 1 | 僞	偽
 2 | 啓	啟
 3 | 喫	吃
 4 | 嫺	嫻
 5 | 嬀	媯
 6 | 峯	峰
 7 | 幺	么
 8 | 擡	抬
 9 | 棱	稜
10 | 檐	簷
11 | 污	汙
12 | 泄	洩
13 | 潙	溈
14 | 潨	潀
15 | 爲	為
16 | 牀	床
17 | 痹	痺
18 | 癡	痴
19 | 皁	皂
20 | 着	著
21 | 睾	睪
22 | 祕	秘
23 | 竈	灶
24 | 糉	粽
25 | 繮	韁
26 | 纔	才
27 | 羣	群
28 | 脣	唇
29 | 蔘	參
30 | 蔿	蒍
31 | 衆	眾
32 | 裏	裡
33 | 覈	核
34 | 踊	踴
35 | 鉢	缽
36 | 鍼	針
37 | 鮎	鯰
38 | 麪	麵
39 | 齶	顎
40 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/TWVariantsRevPhrases.txt:
--------------------------------------------------------------------------------
 1 | 一口吃個	一口喫個
 2 | 一口吃成	一口喫成
 3 | 一家三口	一家三口
 4 | 一家五口	一家五口
 5 | 一家六口	一家六口
 6 | 一家四口	一家四口
 7 | 凶事	凶事
 8 | 凶信	凶信
 9 | 凶兆	凶兆
10 | 凶吉	凶吉
11 | 凶地	凶地
12 | 凶多吉少	凶多吉少
13 | 凶宅	凶宅
14 | 凶年	凶年
15 | 凶德	凶德
16 | 凶怪	凶怪
17 | 凶日	凶日
18 | 凶服	凶服
19 | 凶歲	凶歲
20 | 凶死	凶死
21 | 凶氣	凶氣
22 | 凶煞	凶煞
23 | 凶燄	凶燄
24 | 凶神	凶神
25 | 凶禮	凶禮
26 | 凶耗	凶耗
27 | 凶肆	凶肆
28 | 凶荒	凶荒
29 | 凶訊	凶訊
30 | 凶豎	凶豎
31 | 凶身	凶身
32 | 凶逆	凶逆
33 | 凶門	凶門
34 | 口吃	口吃
35 | 吃口	喫口 吃口
36 | 吃口令	吃口令
37 | 吃口飯	喫口飯
38 | 吃吃	喫喫 吃吃
39 | 吃子	喫子 吃子
40 | 合著	合著
41 | 吉凶	吉凶
42 | 名著	名著
43 | 四凶	四凶
44 | 大凶	大凶
45 | 巨著	巨著
46 | 張口	張口
47 | 昭著	昭著
48 | 歲凶	歲凶
49 | 胃口	胃口
50 | 著作	著作
51 | 著名	著名
52 | 著式	著式
53 | 著志	著志
54 | 著於	著於
55 | 著書	著書
56 | 著白	著白
57 | 著稱	著稱
58 | 著者	著者
59 | 著述	著述
60 | 著錄	著錄
61 | 蹇吃	蹇吃
62 | 逢凶	逢凶
63 | 避凶	避凶
64 | 鄧艾吃	鄧艾吃
65 | 鉅著	鉅著
66 | 開口	開口
67 | 閔凶	閔凶
68 | 顯著	顯著
69 | 


--------------------------------------------------------------------------------
/资源包生成器/dict/pinyinSrc/_wordRevise.txt:
--------------------------------------------------------------------------------
1 | 秘鲁,bì,lǔ
2 | 第比利斯,dì,bǐ,lì,sī
3 | 天行,tiān,xíng


--------------------------------------------------------------------------------
/资源包生成器/资源包生成器.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toolgood/ToolGood.Words/33019cd23b74048d82e298fcb4a673517aa587bf/资源包生成器/资源包生成器.zip


--------------------------------------------------------------------------------