
こんにちは。
全角スペースについてのご質問です。
ある入力項目に対して必須チェックを行っております。
下記のコードはServlet内で以下のチェックを行っております。
----------------------------------------------------------------
String name = req.getParameter("name");
bean.setName(name);
if(bean.name().trim().length() == 0 || bean.name() == null){
return NO_INPUT_ERR;
}
----------------------------------------------------------------
このチェックでは半角スペース『 』であればエラーとして判断してくれますが、
全角スペース『 』ではエラーとして判断してくれません。
(全角スペースはtrim()を実行しても省いてくれないため)
全角スペース『 』の判断をする場合は、
新規にクラスを作成して文字数分繰り返しチェックを入れるような処理を
自分で作成しないとチェックは出来ないのでしょうか?
ご存知の方がおりましたら、ご教授の程お願い致します。
No.1ベストアンサー
- 回答日時:
>自分で作成しないとチェックは出来ないのでしょうか?
作っちゃえばいいんじゃないですか?
また使う機会はあるでしょうし、無駄にはならないでしょ。
考えてるよりその方が早いと思います。
もしくは、チェックだけなら、
bean.name().trim().replaceAll(" ", "").length() == 0
としてしまう手もありますけど。
ところで、
if(bean.name().trim().length() == 0 || bean.name() == null){
の部分ですが、条件の評価は後ろからですっけ?
前から評価するのだとしたら、
bean.name() == null
は無意味ですね。
評価する前に、例外が発生してしまいます。
今回は多少時間もなく、作る時間が制限されておりましたので、下記の処理で対応させて頂きます。
bean.name().trim().replaceAll(" ", "").length() == 0
時間があるときにでも、作成してみます。
> 評価する前に、例外が発生してしまいます。
ご指摘ありがとうございます。
こちらも後ほど見直してみます。
No.3
- 回答日時:
No.1さんのおっしゃるとおり、nullから先に評価しないとダメですね。
で、補足ですが、サーブレットで入力チェックするんじゃなくて、
クライアント側でチェックするのも手では?
Javascriptなどでチェックして、OKならサーブレットに対して要求を投げる。
ってな感じで。いかがでしょう?
そうすればサーブレット側では「全角スペース」がトリムされたものしか来ないという前提になりますので。
No.2
- 回答日時:
もしかしたらどこかに、その様なことをやってくれる便利なAPIがあるかもしれません。
けっこう頻繁に使いますからね。
自分は知りませんので、その様なAPIがあるサイトのURLなどは、知っている方にお任せします。
前に自分が作ったものは
前から1文字ずつ調べて、初めて半角スペース、全角スペース以外の文字が現れたindexを返すメソッド
後ろから1文字ずつ調べて、初めて半角スペース、全角スペース以外の文字が現れたindexを返すメソッド
を作って、そのメソッドからの戻り値を使用してsubstring()してました。
これなら、真ん中の部分は調べなくていいので、若干ですが、楽かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Excel(エクセル) 【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい 4 2022/08/31 11:05
- Excel(エクセル) 【マクロ】フォルダを2つのモニターの定位置に並べたい 2 2022/09/02 01:14
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Access(アクセス) Access で半角スペースと全角スペースの区別について 3 2022/11/05 23:54
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 400エラー 1004エラー
-
if文が通りません。。。
-
子プロセスで発生した例外を親...
-
java独学でのポイント
-
VBA Evaluate関数 型が一致しま...
-
「タイプ初期化子が例外をスロ...
-
戻り値のないメソッド
-
乱数について
-
今日は こどもの日 で、良い天...
-
僕の出身中学校は200人同級生が...
-
C++で*thisは何を指しているの...
-
初心者なのですが、
-
unicodeファイルの読み込み
-
C#で背景色の設定 (0xFFC0DBなど)
-
SQLです教えてくださいお願いし...
-
恋愛
-
マルチプルインスタンスのメリット
-
中学生です。 私は教室の黒板に...
-
drawStringで文字間隔の調整
-
インスタンス参照でアクセスで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
数字か文字列かを判定する関数
-
VBA Evaluate関数 型が一致しま...
-
【JAVA】与えられた金額を貨幣...
-
VC++におけるCStringの変換
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
C#の捕捉されない例外処理の対...
-
ファイルダイアログを開いた時...
-
C# マルチスレッドにおける例外...
-
0除算の例外処理ができない!!...
-
時間の取得
-
Timestamp型への変換について(J...
-
例外ってIf文の中に入れますか...
-
Excelでのエラー
-
文字列が数字のみで構成されて...
-
VB.NETで16進数が正しいかどう...
-
String型の日付(2005/11/25)の...
-
VBA 400エラー 1004エラー
おすすめ情報