JAVAでの文字列判定で、全角文字以外を入力した場合は、エラーとして扱いたいのですが、その方法がわかりません。

教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんなんではいかんでしょうか?


public class test {
public static void main(String args[]) {
String s = args[0];
char[] sc = s.toCharArray();
for ( int i=0; i<sc.length ; i++ ) {
if (String.valueOf(sc[i]).getBytes().length < 2 ) {
System.out.println("error:");
} else {
System.out.println("sucess:");
}
}

}
}
    • good
    • 1

文字列から、1文字ずつ取り出して文字コードを調べるという方法が一番簡単そうです。



だけど、全角文字以外エラーというのは、種類が多すぎて大変そうです。

とりあえず、半角カナを判定する方法が過去の質問にありますので参考にしてみて下さい。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=183352
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q数字か文字列かを判定する関数

 JAVAの初心者です、宜しくお願いします。
  
 テキストボックスに入力された値を、数字か文字列かを判定する関数ってありますか、VBでは「isNumeric」とかがあるのですが、JAVAではヒットしませんでした。

 どこからどのように調べるのでしょうか。
 いいサイトがあれば教えて下さい。

Aベストアンサー

・ たとえば、整数か文字列かの場合、クラスIntegerのparseInt(String s)メソッドを使い、例外(NumberFormatException)が発生するかどうかで判断します。

以下のコードを参考にしてみてください。
------------------------------------------------------------
public class ParseIntSample {

public static void main(String[] args) {
System.out.println(isInteger("123"));
System.out.println(isInteger("123A"));
}

static boolean isInteger(String num) {
try {
int n = Integer.parseInt(num);
return true;
} catch (NumberFormatException e) {
return false;
}
}
}
------------------------------------------------------------
結果
true
false
------------------------------------------------------------
実数の場合は、Double.parseDouble(String s)があります。
これも、例外(NumberFormatException)を発生します。

・ たとえば、整数か文字列かの場合、クラスIntegerのparseInt(String s)メソッドを使い、例外(NumberFormatException)が発生するかどうかで判断します。

以下のコードを参考にしてみてください。
------------------------------------------------------------
public class ParseIntSample {

public static void main(String[] args) {
System.out.println(isInteger("123"));
System.out.println(isInteger("123A"));
}

static boolean isInteger(String num) {
try {
int n = Integer.parse...続きを読む

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

QJAVAで全角カナチェックの方法

初めまして。JAVA初心者です。

JAVAで全角カナ文字をチェックし、それ以外の文字であった場合に条件分岐させるような処理を書きたいのですが、どのように書けばよいのかわかりません。

JREのバージョンは1.3.1です。

業務上必要なので急いでおります。
申し訳ありませんが、お時間のある方ご教授下さい。
よろしくお願い致します。

Aベストアンサー

>JAVAで全角カナ文字をチェックし、それ以外の文字であった場合に条件分岐させる

これは、「全角カナ以外の文字があるかどうか」をチェックするということでしょうか。「半角カナが含まれていないか」を調べる、ではないわけですね。(つまり、全角カナ以外の半角カナ、半角英数字、全角漢字、全部あったらチェックする)

時間がないということのようですので、手っ取り早く「総当り」で調べるメソッドをあげておきましょう。ぱっと思いついて書いた程度なので、とてもベタなものです。

もし、「半角カナが混じっているかチェックする」というなら、zenkakuに半角カナのデータを用意して少しアレンジすればできるでしょう。


public class Sample {

public static void main(String[] args) {
System.out.println(isZenkaku("アイウエオ"));
}

// isZenkaku(String)がtrueなら、全部全角カナ。
public static boolean isZenkaku(String str) {
String zenkaku = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ";
boolean result = false;
for (int i = 0; i < str.length(); i++) {
char c1 = str.charAt(i);
boolean flg = false;
for (int j = 0; j < zenkaku.length(); j++) {
char c2 = zenkaku.charAt(j);
if (c1 == c2) {
flg = true;
}
}
result = flg ? true : result;
}
return result;
}
}

>JAVAで全角カナ文字をチェックし、それ以外の文字であった場合に条件分岐させる

これは、「全角カナ以外の文字があるかどうか」をチェックするということでしょうか。「半角カナが含まれていないか」を調べる、ではないわけですね。(つまり、全角カナ以外の半角カナ、半角英数字、全角漢字、全部あったらチェックする)

時間がないということのようですので、手っ取り早く「総当り」で調べるメソッドをあげておきましょう。ぱっと思いついて書いた程度なので、とてもベタなものです。

もし、「半角カ...続きを読む

QJSP/サーブレットで一般的な入力チェックの仕組みについて

JSP/サーブレットで一般的な入力チェックの仕組みについて

いつもお世話になります。

JSP/サーブレットでWebシステムを作っています。
特別なフレームワークは使っておらず、素のJavaだけで作っているのですが、JSP/サーブレットでWebシステムを開発する場合で、入力チェックでエラーがあった場合、
下記のような動作を実現したいのですが、一般的にはどのような作りになるのでしょうか。

・画面の入力内容はそのまま
・メッセージ領域にエラーメッセージを表示
・エラーがあった項目を赤くする

これらはJavaScriptでしか実現する方法は無いように思っていますが、できればJavaScriptは
使用しない方向で、最悪3番目はできなくてもよいです。

宜しくお願い致します。

Aベストアンサー

JSPを使っているならできると思うけど。

・画面の入力内容はそのまま
・メッセージ領域にエラーメッセージを表示
・エラーがあった項目を赤くする

どれもHTMLの加工の問題でしょう?

Servletがリクエストを受け取る
→入力チェック
→エラーがあったら前の画面のJSPを表示する
→JSP表示の際に、入力された内容をHTMLにセットする
→メッセージ領域にえらーメッセージを表示する
→ついでにエラー項目も赤くする

全部JSPでできる内容よね。


一般的なつくりとしては
まず、その画面の入力項目に対応したBeanを用意する。
Servletがリクエストを受け取り、リクスエトを解析しBeanに格納する。
Beanをその画面用のチェッククラスで入力チェックする。
エラーがなければ次画面を、エラーがあれば呼び出し元画面のJSPを要求。
エラーがあった場合、エラーメッセージをセッションなりリクエストなりに格納。
JSP表示時にBeanに格納されている内容を出力。
エラーメッセージが格納されていればそれを出力。
こんな感じね。

赤くするのはBeanについでにフラグを持たせておけば
JSPで判断できるんじゃない?

JSPを使っているならできると思うけど。

・画面の入力内容はそのまま
・メッセージ領域にエラーメッセージを表示
・エラーがあった項目を赤くする

どれもHTMLの加工の問題でしょう?

Servletがリクエストを受け取る
→入力チェック
→エラーがあったら前の画面のJSPを表示する
→JSP表示の際に、入力された内容をHTMLにセットする
→メッセージ領域にえらーメッセージを表示する
→ついでにエラー項目も赤くする

全部JSPでできる内容よね。


一般的なつくりとしては
まず、その画面の入力項目に対応したBeanを用意...続きを読む

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

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

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



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

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

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

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

QJavaで文字列をゼロ埋め(ゼロパディング)

Javaで文字列を前ゼロで埋め(ゼロパディング)たいのですが、
exceptionが発生してうまくいきません。
だれかお助け頂けたら助かります。

(例)123の前に0を5つ結合したい場合、

String str2="123";
String str = String.format("%08s",str2);

で問題無いと思ったのですが、
exceptionが発生してしまいます。

回答お待ちしております。

Aベストアンサー

そのExceptionはどういったExceptionなのか把握されてますか?
何が悪いのかの理由もそのExceptionからわかると思いますが。

http://docs.oracle.com/javase/jp/6/api/java/util/Formatter.html#syntax
をよく読んで"%08s"という指定ができるのかどうか確認しましょう。

やられたいことは"123"の先頭に"00000000"をつけて後ろから8文字取り出せばできると思いますが。

Qテキストボックス入力を半角英数字に制限する

よろしくお願いします。

テキストボックスに入力される文字を、
半角英数字(英語の場合は大文字のみ)以外入力できないように制限したいのですが可能でしょうか?

もしくは半角英数字以外が入力された場合アラートを出すようにしたいのですが。。。

また、文字数の制限も可能でしょうか?

第一希望)
12文字以内の半角英数大文字以外入力できないように入力制限する。

第二希望)
12文字以内の半角英数大文字以外入力の文字が入力されている状況でボタン(=CGI実行)を押すと警告のアラートが出る。

第三希望)
半角英数大文字以外入力できないように制限、もしくはアラート表示。

例)
AAAA-1234567 ○(ハイフンを含め12文字以内の半角英数字)
AAAA-123456789 ×(12文字以内でない)
aaaa-1234567 ×(小文字が含まれている)


webサーバー・・・HP-UX
web・・・IE6
開発端末・・・windows2000(Tera Term 使用)

情報をお持ちの方いらっしゃいましたら、
よろしくお願いいたします。

よろしくお願いします。

テキストボックスに入力される文字を、
半角英数字(英語の場合は大文字のみ)以外入力できないように制限したいのですが可能でしょうか?

もしくは半角英数字以外が入力された場合アラートを出すようにしたいのですが。。。

また、文字数の制限も可能でしょうか?

第一希望)
12文字以内の半角英数大文字以外入力できないように入力制限する。

第二希望)
12文字以内の半角英数大文字以外入力の文字が入力されている状況でボタン(=CGI実行)を押すと警告のアラートが...続きを読む

Aベストアンサー

第二希望の条件について。
前提としてチェックするテキストボックスのnameがtxtであった場合の説明をします。
まず、次のようにform開始タグにname="fm"とonsubmit="return checkForm()"を追加します。

<form name="fm" action="********.cgi" method="post" onsubmit="return checkForm()">


次に以下を<head>~</head>に貼り付けることで、JavaScriptによる送信前のチェックが可能です。

---------------------------------------
<script type="text/javascript">
<!--
function checkForm(){
var str = document.fm.txt.value;
if (str.match(/[^A-Z\d\-]/)) {
alert("半角英数字(大文字)しか入力できません");
return false;
}
else if (str.length > 12) {
alert("12文字以内で入力してください");
return false;
}
}
//-->
</script>
---------------------------------------

「ハイフンを含め」と書いているので、ハイフンを入れても有効なようにしました。
また、12文字以内としか書かれていないので0文字でも警告が出ないようになっています。
もし、何も入力されていない場合でも警告を出すならば、次のようにしてください。

---------------------------------------
if (!str) {
alert("何も入力されていません");
return false;
}
else if (str.match(/[^A-Z\d\-]/)) {
alert("半角英数字(大文字)しか入力できません");
return false;
}
else if (str.length > 12) {
alert("12文字以内で入力してください");
return false;
}
---------------------------------------

第二希望の条件について。
前提としてチェックするテキストボックスのnameがtxtであった場合の説明をします。
まず、次のようにform開始タグにname="fm"とonsubmit="return checkForm()"を追加します。

<form name="fm" action="********.cgi" method="post" onsubmit="return checkForm()">


次に以下を<head>~</head>に貼り付けることで、JavaScriptによる送信前のチェックが可能です。

---------------------------------------
<script type="text/javascript">
<!--
function checkForm(){
...続きを読む

Qequalsの逆

javaで、文字列の場合は比較演算子の「==」は用いずに

if ((str1.getText()).equals(str2)){
(※…str1,2は文字列)

と書きますよね?
この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

Aベストアンサー

>if !((str1.getText()).equals(str2)){

あくまで
if(){
}


!(str1.getText()).equals(str2)
が入っているので
if !((str1.getText()).equals(str2)){
じゃなくて
if (!(str1.getText()).equals(str2)){
こう。

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング