Java で文字列に数字が含まれているかを調べる

Shikha Chaudhary 2023年10月12日
  1. 文字列に Java の数値が含まれているかどうかを確認する
  2. Java で matches() メソッドを使用して文字列に数値が含まれているかどうかを確認する
  3. Java で replaceAll() メソッドを使用して文字列に数値が含まれているかどうかを確認する
  4. Java で isDigit() メソッドを使用して文字列に数値が含まれているかどうかを確認する
  5. まとめ
Java で文字列に数字が含まれているかを調べる

この記事では、Java で文字列から数値を検索するさまざまな方法について説明します。

文字列に Java の数値が含まれているかどうかを確認する

Java では、文字列は単に文字のシーケンスまたは文字の配列です。ただし、数値を含めることもできます。文字列は次のようになります。

String a = "Hello World!";

数値を入力すると、文字列は次のようになります。

String a = "This is 123";

文字列に数値を入れることは違法ではないことに注意してください。たとえば、以下のプログラムを見てください。

import java.util.*;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    // Asking for a string input
    System.out.println("How may we help you?");
    String a = sc.nextLine();

    System.out.println("Okay, thank you!");
  }
}

出力:

How may we help you?
Find the cube of 10
Okay, thank you!

ユーザーが文字列内に数値を入力した場合でも、プログラムは正常に実行されることに注意してください。ただし、これにより、文字列に数値が含まれているかどうかを確認する必要がある場合があります。

この記事では、それを行うためのいくつかの方法を見ていきます。

Java には、Java String クラスというクラスがあります。このクラスには、さまざまな方法で Java 文字列を操作するための多くのメソッドがあります。文字列内の数値の存在を確認するために、Java ライブラリによって提供される組み込みメソッドのいくつかを使用できます。

ただし、開始する前に、前提条件として、regex または正規表現についても知っておく必要があります。正規表現または正規表現は、Java で文字列を編集、変更、または操作するのに役立つ API です。文字列パターンに基づいて動作します。

正規表現は主に、電子メールアドレスを検証し、パスワードが基本的な制約を満たしているかどうかを確認するために使用されます。java.util.regex パッケージは正規表現に役立ちます。

このパッケージには、目的の異なる 3つの主要なクラスがあります。

  • util.regex.Pattern:これは文字列パターンを定義するために使用されます
  • util.regex.Matcher:これはパターンを使用してマッチング操作を実行します
  • PatternSyntaxException:これは、正規表現に存在する構文エラーを示します

Java の正規表現とパターンの詳細については、このドキュメントを参照してください。

Java で matches() メソッドを使用して文字列に数値が含まれているかどうかを確認する

Java の文字列の matches() メソッドは、文字列が指定された正規表現に一致するかどうかをチェックします。2つの異なる方法で使用できます。

string.matches(regex)

または

Pattern.matches(regex, string)

上記のいずれかの方法を使用しても、同じ結果が得られます。例を見てみましょう。

import java.io.*;
public class Demo {
  public static void main(String args[]) {
    String Str = new String("We will learn about regular expressions");

    System.out.println(Str.matches("(.*)regular(.*)"));

    System.out.println(Str.matches("expressions"));

    System.out.println(Str.matches("We(.*)"));
  }
}

出力:

true
false
true

文字列には expressions という単語が含まれていますが、取得する出力は false であることに注意してください。他の 2つのパターンでは、ピリオドとアスタリスクを使用します。

ピリオドの使用 . 任意の文字に一致しますが、改行文字には一致しません。たとえば、.articleparticle と一致しますが、article とは一致しません。

一方、アスタリスク*は、式を繰り返すために使用されます。一連の 0 個以上の文字を照合するには、.*記号を使用します。

文字列に数字があるかどうかを確認する方法を見てみましょう。

import java.io.*;
public class Demo {
  public static void main(String args[]) {
    String Str = new String("The string has the number 10.");

    // Using regular expressions
    System.out.println(Str.matches("(.*)10(.*)"));
  }
}

出力:

true

最後の行を変更しても、同じ出力が得られることに注意してください。ここで、.*は 0 から無限までの文字の出現を検出します。

次に、二重のバックスラッシュが 2 番目のバックスラッシュをエスケープして、1 から無限の回数までの数字を見つけます。

\\d[0-9] に置き換えることもできます。デモ用のコードを見てください。

import java.io.*;
public class Demo {
  public static void main(String args[]) {
    String Str = new String("The string has the number 10.");

    System.out.println(Str.matches(".*[0-9].*"));
  }
}

出力:

true

これらのメソッドはすべて、ブール値でのみ結果を返します。他の方法では、数値を出力として与えることができます。

Java のマッチャークラスの詳細については、このドキュメントを参照してください。

Java で replaceAll() メソッドを使用して文字列に数値が含まれているかどうかを確認する

このメソッドは、文字列に存在する 1つだけでなく、すべての数値を提供します。ここでは、3 段階のアプローチに従います。

まず、数字以外の文字をスペースに置き換えます。次に、連続するスペースを 1つのスペースにマージし、最後に、残りの文字列に数字のみが含まれるように、末尾のスペースを破棄します。

public class Demo {
  static String FindInt(String str) {
    // First we replace all the non-numeric characters with space
    str = str.replaceAll("[^\\d]", " ");

    // Remove all the trailing spaces
    str = str.trim();

    // Replace consecutive white spaces with one white space
    str = str.replaceAll(" +", " ");

    if (str.equals(""))
      return "-1";

    return str;
  }
  public static void main(String[] args) {
    String str = "gibberish123gibberish 456";
    System.out.print(FindInt(str));
  }
}

出力:

123 456

正規表現文字列と置換文字列を受け取る replaceAll() メソッドを使用します。正規表現と置換文字列に一致する文字を置換する文字列を返します。

構文:

string.replaceAll(String regex, String replacement)

次に、trim() メソッドを使用して、先頭と末尾のスペースを破棄します。Java は、スペース\u0020 の Unicode 値の助けを借りてそれを行います。

trim() メソッドは文字列間のスペースを削除しないことに注意してください。文字列の終了と開始のスペースのみをチェックします。

構文:

string.trim()

Java で isDigit() メソッドを使用して文字列に数値が含まれているかどうかを確認する

文字列から整数を求めるには、isDigit() と呼ばれるこの組み込み関数を使用できます。ただし、その前に、文字列を文字配列に変換する必要があります。例を見てください。

public class Demo {
  public static void main(String args[]) {
    String example = "Find the square of 10";
    char[] ch = example.toCharArray();
    StringBuilder strbuild = new StringBuilder();
    for (char c : ch) {
      if (Character.isDigit(c)) {
        strbuild.append(c);
      }
    }
    System.out.println(strbuild);
  }
}

出力:

10

まず、toCharArray() メソッドを使用して、文字列を文字の配列に変換します。新しく割り当てられた配列と前の文字列の長さは同じです。

構文:

string.toCharArray()

次に、配列内の各要素で isDigit() メソッドを使用して、文字列に数値があるかどうかを確認できます。

まとめ

この記事では、Java で文字列から数値を求める方法を見ました。これを行うには、さまざまな方法で正規表現を使用できます。ただし、正規表現は出力をブール値として提供します。

出力を数値として取得するには、replaceAll() メソッドを trim() メソッドと一緒に使用できます。Java の isDigit() メソッドを使用して、文字列から数値を検索することもできます。

関連記事 - Java String