対象の文字コード内に存在しているかを判別したいのですが可能でしょうか。
java.lang.Character.UnicodeBlock
を使う範囲チェックでしょうか。まず文字コード変換メソッドを定義します。
変換用クラス
Java
1
2static Optional<String> convert(byte[] code, String encoding) {
3 Optional<String> result = null;
4 try {
5 String r = new String(code, encoding);
6 result = Optional.ofNullable((r.isEmpty())?null:r);
7 } catch (Exception e) {
8 result = Optional.empty();
9 }
10 return result;
11}
12
範囲チェック
含まれる範囲をUnicodeBlockの定数で指定してください。どの範囲を含めるかが問題になりそうです。
Java
1static boolean isIn(Optional<String> optional) {
2 return optional.isPresent() &&
3 optional.get()
4 .chars()
5 .mapToObj(UnicodeBlock::of)
6 .allMatch(
7 c -> c == UnicodeBlock.HIRAGANA ||
8 c == UnicodeBlock.KATAKANA ||
9 c == UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS ||
10 c == UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
11 );
12}
13
範囲チェックを正規表現で行うこともできます。調べてください。(追記するかもしれませんが期待しないで)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。