- 締切済み
全角カタカナチェックの方法
住所入力欄(全角カタカナ)での入力チェックを作りたいのです。”アサクサ1-1-4モリビル1F”のような入力が予想されるので、全角カタカナ、全角数字、全角英字、”-”以外の文字は入力を認めないようにしたいのです。なにかいい方法はありませんか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
Stringクラスのmatchesメソッドを使えば、 文字列が特定の文字だけで構成されているかどうかが簡単に判定できます。 以下の例は、入力した文字列が設定された文字列だけで構成されているかどうかを判定するサーブレットです。 import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class katacheck extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { String Str1; try { res.setContentType("text/html"); res.setCharacterEncoding("UTF-8"); PrintWriter PW = res.getWriter(); PW.println("<html><head>"); PW.println("<title>Character Check</title>"); PW.println("</head>"); PW.println("<body>"); if ((Str1 = req.getParameter("Addr")) != null) { Str1 = new String(Str1.getBytes("ISO-8859-1"), "UTF-8"); PW.println("In:" + Str1 + "<br>"); PW.println("Check:" + Boolean.toString(Str1.matches("[[ァ-ヶ][0-9][A-Z][a-z][‐]]*"))); } else PW.println("Start"); PW.println("<form action='http://localhost:8080/minnaservlet/398819' method='GET'>"); PW.println("<input type='text' name='Addr' value=''>"); PW.println("<input type='submit' value='check'>"); PW.println("</form>"); PW.println("</body></html>"); } catch (Exception ex) { System.out.println(ex.toString()+ "::Get"); }; }; }
- thelma
- ベストアンサー率66% (20/30)
ANo.#2の参考URLにあるように、Unicodeブロックをそのまま利用するのであれば、 入力された文字列を#toCharArray()でcharの配列にして、一文字ずつUnicodeBlock.of()メソッドで調べていく方法になるのかな、と思います。 私自身もまだ使ったことがないのですが、実装にはjakartaプロジェクトのValidatorが使えるのでは?と。。
Unicodeでは全角片仮名は 「ァアィイ……ンヴヵヶ」 という順で並んでいます。 したがって、あるchar変数の値が 'ァ' から 'ヶ' までの範囲であれば、その変数値は全角片仮名のコードであると判定できます。「ヵヶ」を片仮名だと認めないとしたら「ヴ」までです。 他の字種も同様です。
- kusukusu
- ベストアンサー率38% (141/363)
{^0-9A-Za-zァ-ヶー} だったかな…