Vérifier si la chaîne contient des nombres en Java
- Vérifier si la chaîne contient des nombres en Java
-
Utilisez la méthode
matches()
pour vérifier si la chaîne contient des nombres en Java -
Utilisez la méthode
replaceAll()
pour vérifier si la chaîne contient des nombres en Java -
Utilisez la méthode
isDigit()
pour vérifier si la chaîne contient des nombres en Java - Conclusion
Cet article décrit les différentes façons de trouver un nombre à partir d’une chaîne en Java.
Vérifier si la chaîne contient des nombres en Java
En Java, une chaîne est simplement une séquence de caractères ou un tableau de caractères. Cependant, il peut également contenir des valeurs numériques. Une chaîne ressemble à ceci.
String a = "Hello World!";
Si nous mettons des valeurs numériques, la chaîne ressemblera à ceci.
String a = "This is 123";
Notez que mettre des valeurs numériques dans une chaîne n’est pas illégal. Regardez le programme ci-dessous, par exemple.
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!");
}
}
Production :
How may we help you?
Find the cube of 10
Okay, thank you!
Notez que le programme fonctionne correctement même si l’utilisateur a entré une valeur numérique dans la chaîne. Mais cela conduit à des situations où nous pourrions avoir besoin de savoir si un nombre est présent ou non dans une chaîne.
Cet article se penchera sur quelques façons de le faire.
Java a une classe, la classe Java String
, qui a beaucoup de méthodes pour manipuler les chaînes Java de différentes manières. Pour découvrir la présence d’un nombre dans une chaîne, nous pouvons utiliser certaines des méthodes intégrées fournies par la bibliothèque Java.
Mais avant de commencer, comme pré-requis, il faut aussi connaître les regex
ou expressions régulières
. Les expressions régulières ou régulières sont une API qui permet de modifier, de modifier ou de manipuler des chaînes en Java. Cela fonctionne sur la base de modèles de chaînes.
Regex est principalement utilisé pour valider les adresses e-mail et vérifier si un mot de passe répond aux contraintes de base. Le package java.util.regex
aide avec les expressions régulières.
Ce paquet a trois classes principales à des fins différentes.
util.regex.Pattern
: Ceci est utilisé pour définir des modèles de chaîneutil.regex.Matcher
: utilise des modèles pour effectuer des opérations de correspondancePatternSyntaxException
: Ceci indique toute erreur de syntaxe présente dans une expression régulière
Pour en savoir plus sur les regex et les modèles en Java, reportez-vous à cette documentation.
Utilisez la méthode matches()
pour vérifier si la chaîne contient des nombres en Java
La méthode java string matches()
vérifie si une chaîne correspond à l’expression régulière donnée. Nous pouvons l’utiliser de deux manières différentes.
string.matches(regex)
Ou
Pattern.matches(regex, string)
Nous obtenons le même résultat en utilisant l’une des méthodes ci-dessus. Prenons un exemple.
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(.*)"));
}
}
Production :
true
false
true
Vous devez vous demander si le mot expressions
est présent dans la chaîne, la sortie que nous obtenons est fausse. Nous utilisons un point et un astérisque dans les deux autres modèles.
L’utilisation d’un point .
correspondra à n’importe quel caractère mais pas à un caractère de saut de ligne. Par exemple, .article
correspond à particle
mais pas à article
.
L’astérisque *
, quant à lui, sert à répéter des expressions. Pour faire correspondre une série de zéro ou plusieurs caractères, nous utilisons le symbole .*
.
Voyons comment nous pouvons trouver si une chaîne a un nombre.
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(.*)"));
}
}
Production :
true
Notez que nous avons changé la dernière ligne et obtenons toujours la même sortie. Ici, le .*
trouve l’occurrence d’un caractère de 0 à l’infini.
Ensuite, la double barre oblique inverse échappe à la seconde barre oblique inverse pour trouver un chiffre de 1 à une infinité de fois.
On peut aussi remplacer le \\d
par [0-9]
. Regardez le code pour la démonstration.
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].*"));
}
}
Production :
true
Toutes ces méthodes renvoient le résultat uniquement en valeurs booléennes. D’autres façons peuvent donner le nombre en sortie.
Pour en savoir plus sur la classe matcher en Java, reportez-vous à cette documentation.
Utilisez la méthode replaceAll()
pour vérifier si la chaîne contient des nombres en Java
Cette méthode donne non pas un mais tous les nombres présents dans une chaîne. Ici, nous suivons une approche en trois étapes.
Tout d’abord, nous remplaçons les caractères non numériques par un espace. Ensuite, nous fusionnons les espaces consécutifs en un seul espace, et enfin, nous supprimons les espaces de fin de sorte que la chaîne restante ne contienne que des nombres.
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));
}
}
Production :
123 456
Nous utilisons la méthode replaceAll()
, qui prend la chaîne regex et la chaîne de remplacement. Il renvoie une chaîne remplaçant les caractères qui correspondent à l’expression régulière et à la chaîne de remplacement.
Syntaxe:
string.replaceAll(String regex, String replacement)
Ensuite, nous utilisons la méthode trim()
pour supprimer les espaces de début et de fin. Java le fait à l’aide de la valeur Unicode de l’espace \u0020
.
Notez que la méthode trim()
ne supprime pas les espaces entre la chaîne. Il vérifie uniquement les espaces à la fin et au début de la chaîne.
Syntaxe:
string.trim()
Utilisez la méthode isDigit()
pour vérifier si la chaîne contient des nombres en Java
Pour trouver un entier à partir d’une chaîne, nous pouvons utiliser cette fonction intégrée appelée isDigit()
. Mais avant cela, nous devons convertir la chaîne en un tableau de caractères. Regardez l’exemple.
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);
}
}
Production :
10
Nous utilisons d’abord la méthode toCharArray()
pour convertir la chaîne en un tableau de caractères. La longueur du tableau nouvellement alloué et de la chaîne précédente est la même.
Syntaxe:
string.toCharArray()
Ensuite, nous pouvons utiliser la méthode isDigit()
sur chaque élément du tableau pour déterminer si la chaîne contient des nombres.
Conclusion
Dans cet article, nous avons vu comment trouver un nombre à partir d’une chaîne en Java. Pour ce faire, nous pouvons utiliser regex de plusieurs façons. Mais regex donne la sortie sous forme de valeur booléenne.
Pour obtenir la sortie sous forme de nombre, nous pouvons utiliser la méthode replaceAll()
avec la méthode trim()
. Nous pouvons également utiliser la méthode Java isDigit()
pour trouver des nombres à partir d’une chaîne.