迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

在 Java 中检查字符串是否包含数字

作者:迹忆客 最近更新:2023/03/26 浏览次数:

本文讨论了在 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 库提供的一些内置方法。

但在我们开始之前,作为先决条件,我们还必须了解 regexregular 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() 方法从字符串中查找数字。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便