アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。

全角スペースについてのご質問です。

ある入力項目に対して必須チェックを行っております。
下記のコードはServlet内で以下のチェックを行っております。

----------------------------------------------------------------
String name = req.getParameter("name");
bean.setName(name);

if(bean.name().trim().length() == 0 || bean.name() == null){
return NO_INPUT_ERR;
}
----------------------------------------------------------------

このチェックでは半角スペース『 』であればエラーとして判断してくれますが、
全角スペース『 』ではエラーとして判断してくれません。
(全角スペースはtrim()を実行しても省いてくれないため)

全角スペース『   』の判断をする場合は、
新規にクラスを作成して文字数分繰り返しチェックを入れるような処理を
自分で作成しないとチェックは出来ないのでしょうか?

ご存知の方がおりましたら、ご教授の程お願い致します。

A 回答 (3件)

>自分で作成しないとチェックは出来ないのでしょうか?



作っちゃえばいいんじゃないですか?

また使う機会はあるでしょうし、無駄にはならないでしょ。

考えてるよりその方が早いと思います。

もしくは、チェックだけなら、

bean.name().trim().replaceAll(" ", "").length() == 0

としてしまう手もありますけど。


ところで、

if(bean.name().trim().length() == 0 || bean.name() == null){

の部分ですが、条件の評価は後ろからですっけ?

前から評価するのだとしたら、

bean.name() == null

は無意味ですね。

評価する前に、例外が発生してしまいます。
    • good
    • 0
この回答へのお礼

今回は多少時間もなく、作る時間が制限されておりましたので、下記の処理で対応させて頂きます。

bean.name().trim().replaceAll(" ", "").length() == 0

時間があるときにでも、作成してみます。

> 評価する前に、例外が発生してしまいます。
ご指摘ありがとうございます。
こちらも後ほど見直してみます。

お礼日時:2005/04/01 16:48

No.1さんのおっしゃるとおり、nullから先に評価しないとダメですね。



で、補足ですが、サーブレットで入力チェックするんじゃなくて、
クライアント側でチェックするのも手では?
Javascriptなどでチェックして、OKならサーブレットに対して要求を投げる。
ってな感じで。いかがでしょう?
そうすればサーブレット側では「全角スペース」がトリムされたものしか来ないという前提になりますので。
    • good
    • 0

もしかしたらどこかに、その様なことをやってくれる便利なAPIがあるかもしれません。


けっこう頻繁に使いますからね。
自分は知りませんので、その様なAPIがあるサイトのURLなどは、知っている方にお任せします。

前に自分が作ったものは
前から1文字ずつ調べて、初めて半角スペース、全角スペース以外の文字が現れたindexを返すメソッド
後ろから1文字ずつ調べて、初めて半角スペース、全角スペース以外の文字が現れたindexを返すメソッド
を作って、そのメソッドからの戻り値を使用してsubstring()してました。
これなら、真ん中の部分は調べなくていいので、若干ですが、楽かと思います。
    • good
    • 0

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