質問するログイン新規登録

回答編集履歴

1

誤りの訂正

2016/09/23 11:10

投稿

退会済みユーザー
answer CHANGED
@@ -164,4 +164,94 @@
164
164
  $ java -version
165
165
  java version "1.8.0_101"
166
166
  Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
167
- Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
167
+ Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
168
+
169
+ ###訂正(追記)
170
+ 間違いがあるので訂正します。上のこの部分を削除してください。
171
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172
+ 半角領域は、\uff01 - \uff9f
173
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
174
+
175
+ 半角文字の定義
176
+ 1) 半角文字のうちにUnicodeに変換できない文字がある。
177
+  http://charset.7jp.net/jis.html
178
+
179
+  まず、Unicodeに変換できたものだけを半角判定の対象にするべきか、という議論があります。
180
+  ここでは「Unicodeに変換できたものだけを半角判定の対象にする」とします。
181
+
182
+ 2) Unicodeに変換できた半角文字を次のように定義する
183
+   半角英数記号 \u0020-\u007e http://unicode.org/charts/PDF/U0000.pdf
184
+   半角カタカナ \uff61 - \uff9 http://unicode.org/charts/PDF/UFF00.pdf
185
+
186
+
187
+ ```Java
188
+ public class HalfWidthCharacters {
189
+
190
+ public static final String FULL_WIDTH_NUMBERS;
191
+ public static final String FULL_WIDTH_ALPHABETS_UPPER;
192
+ public static final String FULL_WIDTH_ALPHABETS_LOWER;
193
+ public static final String FULL_WIDTH_SYMBOLS;
194
+
195
+ public static final String HALF_WIDTH_NUMBERS;
196
+ public static final String HALF_WIDTH_ALPHABETS_UPPER;
197
+ public static final String HALF_WIDTH_ALPHABETS_LOWER;
198
+ public static final String HALF_WIDTH_SYMBOLS;
199
+ public static final String HALF_WIDTH_KATAKANAS;
200
+
201
+ static {
202
+ FULL_WIDTH_NUMBERS = getCharacters(0xff10, 0xff19);
203
+ FULL_WIDTH_ALPHABETS_UPPER = getCharacters(0xff21, 0xff3a);
204
+ FULL_WIDTH_ALPHABETS_LOWER = getCharacters(0xff41, 0xff5a);
205
+ FULL_WIDTH_SYMBOLS = getCharacters(0xff00, 0xff0f) +
206
+ getCharacters(0xff1a, 0xff20) +
207
+ getCharacters(0xff3b, 0xff40) +
208
+ getCharacters(0xff5a, 0xff60);
209
+
210
+ HALF_WIDTH_NUMBERS = getCharacters(0x0030, 0x0039);
211
+ HALF_WIDTH_ALPHABETS_UPPER = getCharacters(0x0041, 0x005a);
212
+ HALF_WIDTH_ALPHABETS_LOWER = getCharacters(0x0061, 0x007a);
213
+ HALF_WIDTH_SYMBOLS = getCharacters(0x0020, 0x002f) +
214
+ getCharacters(0x003a, 0x0040) +
215
+ getCharacters(0x005b, 0x0060) +
216
+ getCharacters(0x007b, 0x007e);
217
+ HALF_WIDTH_KATAKANAS = getCharacters(0xff61, 0xff9f);
218
+ }
219
+
220
+ static String getCharacters(int from, int to) {
221
+ char[] c = new char[to - from + 1];
222
+ for (int i=from; i<=to; ++i) {
223
+ c[i-from] = (char) i;
224
+ }
225
+ String s = new String(c);
226
+ return s;
227
+ }
228
+
229
+ public static void main(String[] args) {
230
+ System.out.println("全角文字");
231
+ System.out.println(FULL_WIDTH_NUMBERS);
232
+ System.out.println(FULL_WIDTH_ALPHABETS_UPPER);
233
+ System.out.println(FULL_WIDTH_ALPHABETS_LOWER);
234
+ System.out.println(FULL_WIDTH_SYMBOLS);
235
+ System.out.println("半角文字");
236
+ System.out.println(HALF_WIDTH_NUMBERS);
237
+ System.out.println(HALF_WIDTH_ALPHABETS_UPPER);
238
+ System.out.println(HALF_WIDTH_ALPHABETS_LOWER);
239
+ System.out.println(HALF_WIDTH_SYMBOLS);
240
+ System.out.println(HALF_WIDTH_KATAKANAS);
241
+ }
242
+ }
243
+ ```
244
+
245
+ 3) 半角文字判定用の正規表現
246
+
247
+ ```Java
248
+
249
+ /** 正規表現 - 半角文字が含まれているか? */
250
+ static final String HAS_HALF_WIDTH_CHARACTERS = “.*[\\u0020-\\u007e\\uff61-\\uff9f]+.*";
251
+
252
+ /** 正規表現 - すべて半角文字か? */
253
+ static final String IS_HALF_WIDTH_CHARACTERS = "^[\\u0020-\\u007e\\uff61-\\uff9f]+$";
254
+
255
+ ```
256
+
257
+ Windos環境で、\は¥です。