簡體   English   中英

如何檢查字符串是否只包含字母?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM