RikuMoto
@RikuMoto (Riku Moto)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

文字列中に空白判定 Java

Q&A

Closed

解決したいこと

ある文字列に空白が存在するかの条件分岐を実装しているのですが判定してくれません。
※空白(半角、全角、タブ)

発生している問題・エラー

error1.java
string id = " 3 3 ";
if (id.matches("[\\s ]+")){
 error = "IDの中に空白が存在しています。"
 return;
}
error2.java
string id = " 3 3 ";
if (id.contains("[\\s ]+")){
 error = "IDの中に空白が存在しています。"
 return;
}

matchesメソッド、containsメソッドを記述したのですが、判定(true)してくれません。
ご教授お願い致します。

0

1Answer

matchesは全体が一致しないといけません。
こうするといいですよ。

if (id.matches(".*[\\s ].*")){

containsは正規表現が使えません。

全角スペース判定確認コード:

public class Main {
    public static void main(String[] args) {
        String id = "3 3";
        if (id.matches(".*[\\s ].*")){
            System.out.println("IDの中に空白が存在しています。");
        } else {
            System.out.println("IDの中に空白が存在していません。");
        }
    }
}
2Like

Comments

  1. @RikuMoto

    Questioner

    いつもありがとうございます!!!

    半角スペースだと判定したのですが全角だと通っちゃうのですがどうしたらいいですかね...すみません...
  2. 追記したコードで
    IDの中に空白が存在しています。
    と表示されましたよ。
    新し目のJavaバージョンをインストールした環境を作って試してみてはいかがですか?
    私の環境:
    $ java --version
    openjdk 17.0.4 2022-07-19
    OpenJDK Runtime Environment (build 17.0.4+8-Ubuntu-120.04)
    OpenJDK 64-Bit Server VM (build 17.0.4+8-Ubuntu-120.04, mixed mode, sharing)
  3. @RikuMoto

    Questioner

    ほ、ほんとうですか...
    今回Javaのバージョンを変えずに実装しないといけないのですみません(泣)

    バージョンでこんなに変わるなんて...
  4. @RikuMoto

    Questioner

    ほ、ほんとですね...なんでできないんだろ...

    話は変わるんですが、全角英数字だけ判定したいのですが

    ```error.java
    //全角英数字チェック
    private boolean zenkakucheck(String value) {
    if(value.matches("[0-9A-Za-z]+"))
    return false;
    return true;
    }
    ```
    String value = "86"

    こちらマッチせずtrueにいってしまうのですがどうしたらいいでしょうかすみません。
  5. すべてが全角文字ならfalseで期待通りの結果ですか?
    ideoneではfalseになりましたよ。
    https://ideone.com/ph1UUv
    ideoneなどのオンラインサイトでも動作確認するようにしてはいかがでしょうか?
  6. @RikuMoto

    Questioner

    え、ほんとだ
    falseになってますね,,,なんでtrueになるんだろ。。。

    ちなみに1文字でも全角がふくんでいたらfalseになってほしいです。ほんとにすみません
  7. @RikuMoto

    Questioner

    if(value.matches("*/[0-9A-Za-z]*/"))

    こちらの書き方だといけました!
  8. @RikuMoto

    Questioner

    私はいったいなんのプログラムをしているんだ...

Your answer might help someone💌