OSDN Git Service

Initial contents of nt2chview
[nt2chview/stable.git] / NT2chView45 / NTSimString.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 \r
5 namespace NT2chView\r
6 {\r
7     class NTSimString\r
8     {\r
9                 List<string> mSplitedString;\r
10                 \r
11                 \r
12                 const int TOKEN_SPACE = 0;\r
13                 const int TOKEN_HIRAKANA = 1;\r
14                 const int TOKEN_NUMALPHA = 2;\r
15                 const int TOKEN_OTHER = 3;\r
16                 \r
17                 public NTSimString(String seed){\r
18             mSplitedString = new List<string>();\r
19                         int current = TOKEN_OTHER;\r
20                         int len = seed.Length;\r
21                         int start = 0;\r
22                         int i = 0;\r
23                         for(; i < len; i++){\r
24                                 char c = seed[i];\r
25                                 int token = getToken(c);\r
26                                 if(token == TOKEN_SPACE){\r
27                                         if(current != TOKEN_SPACE){\r
28                                                 if(start < i){\r
29                             mSplitedString.Add(seed.Substring(start, i - start));\r
30                                                 }\r
31                                                 current = TOKEN_SPACE;\r
32                                         }\r
33                                         start = i+1;\r
34                                 }else{\r
35                                         if(current != token){\r
36                                                 if(start < i){\r
37                             mSplitedString.Add(\r
38                                 seed.Substring(start, i - start));\r
39                                                 }\r
40                                                 current = token;\r
41                                                 start = i;\r
42                                         }\r
43                                 }\r
44                         }\r
45                         if(start < i && current != TOKEN_SPACE){\r
46                 mSplitedString.Add(\r
47                     seed.Substring(start, i - start));\r
48                         }\r
49                 }\r
50                 \r
51                 public int match(String source){\r
52                         int match_len = 0;\r
53             foreach (string line in mSplitedString)\r
54             {\r
55                 //int len;\r
56                 //int idx = line.match(source, 0, out len);\r
57                 //if (idx >= 0 && len > 1)\r
58                 //{\r
59                 //    match_len += len;\r
60                 //}\r
61                 if (0 <= source.IndexOf(line, StringComparison.CurrentCultureIgnoreCase))\r
62                 {\r
63                                         match_len += line.Length;\r
64                                 }\r
65                         }\r
66                         return match_len;\r
67                 }\r
68                 public void log(){\r
69                         //DebugUtil.log("SimString logging...");\r
70                         //foreach(String line in mSplitedString){\r
71                                 //DebugUtil.log(line);\r
72                         //}\r
73                 }\r
74                 int getToken(char c){\r
75                         for(int i = 0; i < mSeparatorChar.Length; i++){\r
76                                 if(c == mSeparatorChar[i]){\r
77                                         return TOKEN_SPACE;\r
78                                 }\r
79                         }\r
80                         for(int i = 0; i < mHiraKakaChar.Length; i++){\r
81                                 if(c == mHiraKakaChar[i]){\r
82                                         return TOKEN_HIRAKANA;\r
83                                 }\r
84                         }\r
85                         for(int i = 0; i < mNumAlphaChar.Length; i++){\r
86                                 if(c == mNumAlphaChar[i]){\r
87                                         return TOKEN_NUMALPHA;\r
88                                 }\r
89                         }\r
90                         \r
91                         return TOKEN_OTHER;\r
92                 }\r
93                 static char [] mSeparatorChar = {\r
94                         ' ',' ','(',')','【','】','(',')','「','」','{','}','{','}','〈','〉',\r
95                         '《','》','「','」','『','』',',','.','、','。','★','※','*','?','!','?','!','・'};\r
96                 static char [] mHiraKakaChar = {\r
97                         'ー','ー','あ','ア','ぁ','ァ','い','イ','ぃ','ィ','う','ウ','ぅ','ゥ',\r
98                         'え','エ','ぇ','ェ','お','オ','ぉ','ォ','を','ヲ',\r
99                         'か','カ','ヵ','ヵ','き','キ','く','ク','け','ケ','ヶ','ヶ','こ','コ',\r
100                         'さ','サ','し','シ','す','ス','せ','セ','そ','ソ',\r
101                         'た','タ','ち','チ','つ','ツ','っ','ッ','て','テ','と','ト',\r
102                         'な','ナ','に','ニ','ぬ','ヌ','ね','ネ','の','ノ',\r
103                         'は','ハ','ワ','わ','ひ','ヒ','ふ','フ','へ','ヘ','ほ','ホ',\r
104                         'ま','マ','み','ミ','む','ム','め','メ','も','モ',\r
105                         'や','ヤ','ゃ','ャ','ゆ','ユ','ゅ','ュ','よ','ヨ','ょ','ョ',\r
106                         'ラ','ら','ラ','り','リ','リ','る','ル','ル',\r
107                         'れ','レ','レ','ろ','ロ','ロ','ん','ン',\r
108                         'が','ガ','ぎ','ギ','ぐ','グ','げ','ゲ','ご','ゴ',\r
109                         'ざ','ザ','じ','ジ','ぢ','ヂ','ず','ズ','づ','ヅ',\r
110                         'ぜ','ゼ','ぞ','ゾ','だ','ダ','で','デ','ど','ド',\r
111                         'ば','バ','び','ビ','ぶ','ブ','べ','ベ','ぼ','ボ',\r
112                         'ぱ','パ','ぴ','ピ','ぷ','プ','ぺ','ペ','ぽ','ポ'};\r
113                 static char [] mNumAlphaChar = {\r
114                         '-','_','-','_',\r
115                         '0','0','1','1','2','2','3','3','4','4',\r
116                         '5','5','6','6','7','7','8','8','9','9',\r
117                         'A','a','A','a','B','b','B','b','C','c','C','c',\r
118                         'D','d','D','d','E','e','E','e','F','f','F','f',\r
119                         'G','g','G','g','H','h','H','h','I','i','I','i',\r
120                         'J','j','J','j','K','k','K','k',        'L','l','L','l',\r
121                         'M','m','M','m','N','n','N','n','O','o','O','o',\r
122                         'P','p','P','p','Q','q','Q','q','R','r','R','r',\r
123                         'S','s','S','s','T','t','T','t',        'U','u','U','u',\r
124                         'V','v','V','v','W','w','W','w','X','x','X','x',\r
125                         'Y','y','Y','y','Z','z','Z','z','%','%','$','$','#','#',\r
126                         '@','@','+','+'};\r
127         }\r
128     \r
129 }\r