在 Java 中检查字符串是否包含数字
- 在 Java 中检查字符串是否包含数字
-
使用
matches()
方法检查字符串是否包含 Java 中的数字 -
使用
replaceAll()
方法检查字符串是否包含 Java 中的数字 -
使用
isDigit()
方法检查字符串是否包含 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
或 regular expressions
。正则表达式或正则表达式是一种 API,可帮助在 Java 中编辑、更改或操作字符串。它基于字符串模式工作。
正则表达式主要用于验证电子邮件地址并检查密码是否满足基本约束。java.util.regex
包有助于使用正则表达式。
这个包有三个用于不同目的的主要类。
util.regex.Pattern
:用于定义字符串模式util.regex.Matcher
:这使用模式来执行匹配操作PatternSyntaxException
:这表明正则表达式中存在任何语法错误
要了解有关 Java 中的正则表达式和模式的更多信息,请参阅此文档。
使用 matches()
方法检查字符串是否包含 Java 中的数字
java 字符串 matches()
方法检查字符串是否匹配给定的正则表达式。我们可以通过两种不同的方式使用它。
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
,但我们得到的输出却是假的。我们在其他两种模式中使用句号和星号。
句号 .
的使用将匹配任何字符,但不匹配换行符。例如,.article
匹配 particle
但不匹配 article
。
另一方面,星号*
用于重复表达式。为了匹配一系列零个或多个字符,我们使用 .*
符号。
让我们看看如何找到一个字符串是否有数字。
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 到无穷大的字符的出现次数。
然后双反斜杠转义第二个反斜杠以查找从 1 到无限次的数字。
我们也可以用 [0-9]
替换\\d
。查看演示代码。
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 中匹配器类的更多信息,请参阅此文档。
使用 replaceAll()
方法检查字符串是否包含 Java 中的数字
此方法不仅给出一个,而且给出字符串中存在的所有数字。在这里,我们遵循三步法。
首先,我们用空格替换非数字字符。接下来,我们将连续的空格合并为一个空格,最后,我们丢弃尾随空格,使剩余的字符串只包含数字。
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()
使用 isDigit()
方法检查字符串是否包含 Java 中的数字
要从字符串中查找整数,我们可以使用名为 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()
方法从字符串中查找数字。