在 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()
方法從字串中查詢數字。