[英]How to check if a string contains only letters?
如何檢查字符串是否只包含字母? 是否有任何特定功能可以做到這一點?
我不知道直接 function 但是您可以按照以下步驟操作:
1) 將字符串作為輸入 2) 使用toLower()
方法,將所有內容轉換為小寫 3) 使用 String class 的toCharArray()
方法轉換為字符數組 4) 現在檢查每個位置是否有字符之間的字符到 z
代碼:
import java.util.Scanner;
public class StringValidation{
public boolean validtaeString(String str) {
str = str.toLowerCase();
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char ch = charArray[i];
if (!(ch >= 'a' && ch <= 'z')) {
return false;
}
}
return true;
}
public static void main(String args[]) {
Scanner sc= new Scanner(System.in);
System.out.println("Enter a string value: ");
String str = sc.next();
StringValidation obj = new StringValidation();
boolean bool = obj.validtaeString(str);
if(!bool) {
System.out.println("Given String is invalid");
}else{
System.out.println("Given String is valid");
}
}
}
這是 output:
Output:
Enter a string value:
24stackoverflow
Given String is invalid
------------------------
Enter a string value:
StackOverflow
Given String is valid
如果您只關心簡單的英文無重音字母,則可以使用正則表達式來測試字符串是否與模式/^[az]+$/i
匹配。
對於多種語言的字母,您可以使用/^\p{L}+$/i
。
作為 Java 正則表達式,這些看起來像:
Pattern.compile("^[az]+$", Pattern.CASE_INSENSITIVE)
Pattern.compile("^\\p{L}+$")
更新:對於重音字符,{L} 比 {Alpha} 效果更好。
pattern = Pattern.compile("^\\p{L}+$");
System.out.println(pattern.matcher("foo").matches());
System.out.println(pattern.matcher("Foo").matches());
System.out.println(pattern.matcher("föo").matches());
System.out.println(pattern.matcher("fo-oo").matches());
我看到了答案,我想添加另一個解決方案,我更喜歡這個解決方案,因為它更個性化。
class Character 有方法,like.isLetter()。 您還可以查看java 文檔
我有一個這樣的代碼示例:
public class CheckLetterInTheString {
public static boolean isOnlyLetter(String string){
if(string == null || string.isEmpty()){
throw new IllegalArgumentException("String not valid");
}
char[] chatString = string.toCharArray();
for(Character character : chatString){
if(!Character.isLetter(character) && !Character.isSpaceChar(character)){
return false;
}
}
return true;
}
}
現在你可以打電話了
System.out.println(CheckLetterInTheString.isOnlyLetter("String only letter")); //true
System.out.println(CheckLetterInTheString.isOnlyLetter("Contains num 12")); //false
PS:我喜歡這個解決方案,因為它更具個性化,而且我認為它比正則表達式更具可讀性。 但這只是我的意見
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.