Prüfen, ob eine Zeichenkette in Java Zahlen enthält

Shikha Chaudhary 12 Oktober 2023
  1. Überprüfen Sie, ob die Zeichenfolge in Java Zahlen enthält
  2. Verwenden Sie die matches()-Methode, um zu prüfen, ob String Zahlen in Java enthält
  3. Verwenden Sie die replaceAll()-Methode, um zu prüfen, ob der String Zahlen in Java enthält
  4. Verwenden Sie die isDigit()-Methode, um zu prüfen, ob der String Zahlen in Java enthält
  5. Fazit
Prüfen, ob eine Zeichenkette in Java Zahlen enthält

Dieser Artikel beschreibt die verschiedenen Möglichkeiten, eine Zahl aus einer Zeichenfolge in Java zu finden.

Überprüfen Sie, ob die Zeichenfolge in Java Zahlen enthält

In Java ist ein String einfach eine Folge von Zeichen oder ein Array von Zeichen. Es kann jedoch auch numerische Werte enthalten. Ein String sieht so aus.

String a = "Hello World!";

Wenn wir einige numerische Werte eingeben, sieht die Zeichenfolge so aus.

String a = "This is 123";

Beachten Sie, dass das Einfügen numerischer Werte in eine Zeichenfolge nicht illegal ist. Schauen Sie sich zum Beispiel das folgende Programm an.

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!");
  }
}

Ausgabe:

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

Beachten Sie, dass das Programm einwandfrei läuft, obwohl der Benutzer einen numerischen Wert in die Zeichenfolge eingegeben hat. Dies führt jedoch zu Situationen, in denen wir möglicherweise herausfinden müssen, ob eine Zahl in einer Zeichenfolge vorhanden ist oder nicht.

In diesem Artikel werden einige Möglichkeiten beschrieben, dies zu tun.

Java hat eine Klasse, die Java-Klasse String, die viele Methoden hat, um Java-Strings auf unterschiedliche Weise zu manipulieren. Um das Vorhandensein einer Zahl in einer Zeichenfolge herauszufinden, können wir einige der integrierten Methoden verwenden, die von der Java-Bibliothek bereitgestellt werden.

Aber bevor wir anfangen, müssen wir uns als Voraussetzung auch mit regex oder regular expressions auskennen. Regex oder reguläre Ausdrücke ist eine API, die beim Bearbeiten, Ändern oder Manipulieren von Zeichenketten in Java hilft. Es funktioniert auf der Grundlage von String-Mustern.

Regex wird hauptsächlich verwendet, um E-Mail-Adressen zu validieren und zu überprüfen, ob ein Passwort die grundlegenden Einschränkungen erfüllt. Bei regulären Ausdrücken hilft das Paket java.util.regex.

Dieses Paket hat drei Hauptklassen für unterschiedliche Zwecke.

  • util.regex.Pattern: Wird zum Definieren von Zeichenkettenmustern verwendet
  • util.regex.Matcher: Dies verwendet Muster, um Matching-Operationen durchzuführen
  • PatternSyntaxException: Zeigt jeden Syntaxfehler an, der in einem regulären Ausdruck vorhanden ist

Um mehr über Regex und Muster in Java zu erfahren, lesen Sie diese [Dokumentation].

Verwenden Sie die matches()-Methode, um zu prüfen, ob String Zahlen in Java enthält

Die Java-String-Methode matches() prüft, ob ein String mit dem angegebenen regulären Ausdruck übereinstimmt. Wir können es auf zwei verschiedene Arten verwenden.

string.matches(regex)

Oder

Pattern.matches(regex, string)

Wir erhalten das gleiche Ergebnis, indem wir eine der oben genannten Methoden verwenden. Sehen wir uns ein Beispiel an.

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(.*)"));
  }
}

Ausgabe:

true
false
true

Sie müssen sich wundern, dass, obwohl das Wort expressions in der Zeichenfolge vorhanden ist, die Ausgabe, die wir erhalten, falsch ist. In den anderen beiden Mustern verwenden wir einen Punkt und ein Sternchen.

Die Verwendung eines Punktes . stimmt mit jedem Zeichen überein, aber nicht mit einem Zeilenumbruchzeichen. Beispiel: .article stimmt mit particle überein, aber nicht mit article.

Der Stern * hingegen dient zur Wiederholung von Ausdrücken. Um eine Reihe von null oder mehr Zeichen abzugleichen, verwenden wir das Symbol .*.

Lassen Sie uns sehen, wie wir herausfinden können, ob eine Zeichenfolge eine Zahl hat.

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(.*)"));
  }
}

Ausgabe:

true

Beachten Sie, dass wir die letzte Zeile geändert haben und immer noch dieselbe Ausgabe erhalten. Hier findet das .* das Vorkommen eines Zeichens von 0 bis unendlich.

Dann maskiert der doppelte Backslash den zweiten Backslash, um eine Ziffer von 1 bis unendlich zu finden.

Wir können das \\d auch durch [0-9] ersetzen. Sehen Sie sich den Code zur Demonstration an.

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].*"));
  }
}

Ausgabe:

true

Alle diese Methoden geben das Ergebnis nur in booleschen Werten zurück. Andere Möglichkeiten können die Zahl als Ausgabe liefern.

Weitere Informationen zur Matcher-Klasse in Java finden Sie in dieser [Dokumentation].

Verwenden Sie die replaceAll()-Methode, um zu prüfen, ob der String Zahlen in Java enthält

Diese Methode liefert nicht nur eine, sondern alle Zahlen, die in einer Zeichenfolge vorhanden sind. Dabei verfolgen wir einen dreistufigen Ansatz.

Zuerst ersetzen wir die nicht numerischen Zeichen durch ein Leerzeichen. Als nächstes führen wir aufeinanderfolgende Leerzeichen zu einem Leerzeichen zusammen, und schließlich verwerfen wir die abschließenden Leerzeichen, sodass die verbleibende Zeichenfolge nur Zahlen enthält.

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));
  }
}

Ausgabe:

123 456

Wir verwenden die Methode replaceAll(), die den Regex-String und den Ersetzungsstring übernimmt. Es gibt eine Zeichenfolge zurück, die die Zeichen ersetzt, die mit der Regex und der Ersatzzeichenfolge übereinstimmen.

Syntax:

string.replaceAll(String regex, String replacement)

Dann verwenden wir die Methode trim(), um die führenden und nachfolgenden Leerzeichen zu verwerfen. Java macht das mit Hilfe des Unicode-Wertes des Leerzeichens \u0020.

Beachten Sie, dass die Methode trim() die Leerzeichen zwischen den Zeichenketten nicht entfernt. Es überprüft nur die Leerzeichen am Ende und am Anfang der Zeichenfolge.

Syntax:

string.trim()

Verwenden Sie die isDigit()-Methode, um zu prüfen, ob der String Zahlen in Java enthält

Um eine Ganzzahl aus einem String zu finden, können wir diese eingebaute Funktion namens isDigit() verwenden. Aber vorher müssen wir den String in ein Zeichenarray umwandeln. Schau dir das Beispiel an.

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);
  }
}

Ausgabe:

10

Wir verwenden zuerst die Methode toCharArray(), um den String in ein Array von Zeichen umzuwandeln. Die Länge des neu zugewiesenen Arrays und der vorherigen Zeichenfolge ist gleich.

Syntax:

string.toCharArray()

Dann können wir die Methode isDigit() für jedes Element im Array verwenden, um herauszufinden, ob der String Zahlen enthält.

Fazit

In diesem Artikel haben wir gesehen, wie man eine Zahl aus einer Zeichenfolge in Java findet. Dazu können wir Regex auf viele Arten verwenden. Regex gibt die Ausgabe jedoch als booleschen Wert aus.

Um die Ausgabe als Zahl zu erhalten, können wir die Methode replaceAll() mit der Methode trim() verwenden. Wir können auch die Java-Methode isDigit() verwenden, um Zahlen aus einem String zu finden.

Verwandter Artikel - Java String