繁体   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