在 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
:这表明正则表达式中存在任何语法错误
要了解有关 正则表达式和模式的更多信息,请参阅此文档。
使用 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
所有这些方法都只返回布尔值的结果。其他方式可以将数字作为输出。
使用 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()
方法从字符串中查找数字。
相关文章
在 Java 中获取文件大小
发布时间:2023/05/01 浏览次数:139 分类:Java
-
Java 提供了不同的方法来获取文件的字节大小。 本教程演示了在 Java 中获取文件大小的不同方法。使用 Java IO 的文件类获取文件大小 Java IO 包的 File 类提供了以字节为单位获取文件大小的功能。
Java 中的文件分隔符
发布时间:2023/05/01 浏览次数:108 分类:Java
-
本篇文章介绍了 Java 中的文件分隔符。Java 中的文件分隔符 文件分隔符是用来分隔目录的字符; 例如,Unix 使用 /,Windows 使用 \ 作为文件分隔符。
Java 中的文件过滤器
发布时间:2023/05/01 浏览次数:193 分类:Java
-
本篇文章介绍如何在 Java 中使用 FileFilter。FileFilter 用于过滤具有特定扩展名的文件。 Java内置包IO和Apache Commons IO为FileFilter提供了类和接口来进行文件过滤操作。
Java 获取 ISO 8601 格式的当前时间戳
发布时间:2023/05/01 浏览次数:132 分类:Java
-
本篇文章介绍了 ISO 8601 日期格式、其重要性及其在 Java 中的使用。 它还列出了一些优点来强调为什么应该使用 ISO 格式来表示日期。
在 Java 中获取数组的子集
发布时间:2023/05/01 浏览次数:142 分类:Java
-
本篇文章介绍了几种在 Java 中获取数组子集的方法。使用 Arrays.copyOf() 方法获取数组的子集 使用 Arrays.copyOfRange() 方法获取数组的子集
用 Java 填充二维数组
发布时间:2023/05/01 浏览次数:110 分类:Java
-
二维数组是基于表结构的,即行和列,填充二维数组不能通过简单的添加到数组操作来完成。 本篇文章介绍如何在 Java 中填充二维数组。
计算 Java 数组中的重复元素
发布时间:2023/05/01 浏览次数:202 分类:Java
-
本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。
Java 中 List 和 Arraylist 的区别
发布时间:2023/05/01 浏览次数:90 分类:Java
-
表示为单个单元的一组单个对象称为集合。 在 Java 中,Collection 是一个具有多个已定义接口和类的框架,用于将一组对象表示为一个单元。 它允许我们操纵