檢查字符串的第一個字母是否為數字
一、概述
在這個簡短的教程中,我們將學習如何在 Java 中檢查字符串的第一個字符是否為數字。
我們將從探索使用 JDK 本身執行此操作的方法開始。然後我們將看到如何使用第三方庫(如 Guava)實現相同的目標。
2.使用JDK
Java 提供了多種方便的方法來檢查字符串是否以數字開頭。因此,讓我們仔細看看每個選項。
2.1.使用charAt()
實現我們目標的最簡單方法是使用charAt()
方法。
首先,我們將使用charAt
(0)
返回第一個字符:
static boolean checkUsingCharAtMethod(String str) {
if (str == null || str.length() == 0) {
return false;
}
char c = str.charAt(0);
return c >= '0' && c <= '9';
}
在上面的示例中,如果指定的字符串為null
或其長度為零,我們將返回false
。否則,我們獲取第一個字符並檢查它是否為數字。
接下來,讓我們使用測試用例來確認這一點:
@Test
void givenString_whenUsingCharAtMethod_thenSuccess() {
assertTrue(FirstCharDigit.checkUsingCharAtMethod("12 years"));
assertFalse(FirstCharDigit.checkUsingCharAtMethod("years"));
assertFalse(FirstCharDigit.checkUsingCharAtMethod(""));
assertFalse(FirstCharDigit.checkUsingCharAtMethod(null));
}
2.2.使用Character.isDigit()
Character
類帶有一個方便的方法,稱為isDigit().
顧名思義,
它確定指定的字符是否為數字.
讓我們看看它的實際效果:
static boolean checkUsingIsDigitMethod(String str) {
return Character.isDigit(str.charAt(0));
}
正如我們在上面看到的,我們使用charAt
(0)
獲得第一個字符.
然後,我們將返回值傳遞給isDigit()
方法。
現在,讓我們使用測試用例對其進行測試:
@Test
void givenString_whenUsingIsDigitMethod_thenSuccess() {
assertTrue(FirstCharDigit.checkUsingIsDigitMethod("10 cm"));
assertFalse(FirstCharDigit.checkUsingIsDigitMethod("cm"));
assertFalse(FirstCharDigit.checkUsingIsDigitMethod(""));
assertFalse(FirstCharDigit.checkUsingIsDigitMethod(null));
}
2.3.使用Pattern
類
或者,我們可以使用Pattern
類來編譯檢查給定字符串是否以數字開頭的正則表達式。
通常,我們可以使用正則表達式“^[0-9]”
或“^\\d”
來匹配以數字開頭的字符串。
接下來,讓我們看看如何使用Pattern
來針對給定的字符串編譯我們的正則表達式:
static boolean checkUsingPatternClass(String str) {
return Pattern.compile("^[0-9].*")
.matcher(str)
.matches();
}
如我們所見, compile()
返回一個提供matches()
方法的Matcher
。
該解決方案也可以正常工作,如單元測試所示:
@Test
void givenString_whenUsingPatternClass_thenSuccess() {
assertTrue(FirstCharDigit.checkUsingPatternClass("1 kg"));
assertFalse(FirstCharDigit.checkUsingPatternClass("kg"));
assertFalse(FirstCharDigit.checkUsingPatternClass(""));
assertFalse(FirstCharDigit.checkUsingPatternClass(null));
}
2.4.使用matches()
另一種檢查字符串是否以數字開頭的方法是使用matches()
方法。它接受正則表達式作為參數。
因此,讓我們重用我們在上一個示例中指定的相同正則表達式:
static boolean checkUsingMatchesMethod(String str) {
return str.matches("^[0-9].*");
}
現在讓我們添加另一個測試用例來驗證我們的方法是否按預期工作:
@Test
void givenString_whenUsingMatchesMethod_thenSuccess() {
assertTrue(FirstCharDigit.checkUsingMatchesMethod("123"));
assertFalse(FirstCharDigit.checkUsingMatchesMethod("ABC"));
assertFalse(FirstCharDigit.checkUsingMatchesMethod(""));
assertFalse(FirstCharDigit.checkUsingMatchesMethod(null));
}
3.使用番石榴
同樣,我們可以使用 Guava 庫來完成相同的目的。首先,我們需要將 Guava依賴項添加到pom.xml
文件中:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
Guava 提供了一組用於字符串和字符操作的現成實用程序類。在這些類中,我們找到了CharMatcher
類。
3.1.使用CharMatcher.inRange()
實用程序類CharMatcher
帶有一個稱為inRange(),
它匹配給定範圍內的任何字符。
這裡的主要思想是定義一個僅表示數字的範圍。
現在,讓我們舉例說明CharMatcher.inRange()
的用法:
static boolean checkUsingCharMatcherInRangeMethod(String str) {
return CharMatcher.inRange('0', '9')
.matches(str.charAt(0));
}
值得注意的是,此處包含端點'0'
和'9'
。
與往常一樣,讓我們創建一個測試用例來測試我們的方法:
@Test
void givenString_whenUsingCharMatcherInRangeMethod_thenSuccess() {
assertTrue(FirstCharDigit.checkUsingCharMatcherInRangeMethod("2023"));
assertFalse(FirstCharDigit.checkUsingCharMatcherInRangeMethod("abc"));
assertFalse(FirstCharDigit.checkUsingCharMatcherInRangeMethod(""));
assertFalse(FirstCharDigit.checkUsingCharMatcherInRangeMethod(null));
}
3.2.使用CharMatcher.forPredicate()
或者,我們可以使用CharMatcher.forPredicate()
來指示給定字符是否為數字。那麼,讓我們在實踐中看看它:
static boolean checkUsingCharMatcherForPredicateMethod(String str) {
return CharMatcher.forPredicate(Character::isDigit)
.matches(str.charAt(0));
}
簡而言之,我們在給定字符串的第一個字符上應用了謂詞Character::isDigit
。
現在,讓我們使用測試用例確認一切正常:
@Test
void givenString_whenUsingCharMatcherForPredicateMethod_thenSuccess() {
assertTrue(FirstCharDigit.checkUsingCharMatcherForPredicateMethod("100"));
assertFalse(FirstCharDigit.checkUsingCharMatcherForPredicateMethod("abdo"));
assertFalse(FirstCharDigit.checkUsingCharMatcherForPredicateMethod(""));
assertFalse(FirstCharDigit.checkUsingCharMatcherForPredicateMethod(null));
}
4。結論
在這篇簡短的文章中,我們學習了多種檢查給定字符串的第一個字符是否為數字的方法。
我們研究了使用 JDK 方法執行此操作的一些方法。然後我們討論瞭如何使用 Guava 實現相同的目標。
與往常一樣,示例的完整源代碼可在 GitHub 上獲得。