179

在不使用正则表达式的情况下,识别 string.charAt(index) 是 Java 中的 Az 字母还是数字的最佳和/或最简单的方法是什么?谢谢。

4

9 回答 9

329

Character.isDigit(string.charAt(index))( JavaDoc ) 如果是数字则返回 true
Character.isLetter(string.charAt(index))( JavaDoc ) 如果是字母则返回 true

于 2010-10-28T23:06:22.020 回答
29

正如答案所示(如果您仔细检查它们!),您的问题是模棱两可的。“Az 字母”或数字是什么意思?

  • 如果您想知道一个字符是Unicode字母还是数字,请使用Character.isLetterandCharacter.isDigit方法。

  • 如果您想知道一个字符是ASCII字母还是数字,那么最好的办法是通过比较字符范围 'a' 到 'z'、'A' 到 'Z' 和 '0' 到'9'。

请注意,所有 ASCII 字母/数字都是 Unicode 字母/数字......但是有许多 Unicode 字母/数字字符不是 ASCII。例如,重音字母、西里尔文、梵文、...


一般的解决方案是这样做:

Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);

然后测试该块是否是您感兴趣的块之一。在某些情况下,您需要测试多个块。例如,西里尔字符(至少)有 4 个代码块,拉丁字符有 7 个代码块。该类Character.UnicodeBlock为知名块定义静态常量;请参阅javadocs

请注意,任何代码点最多位于一个块中。

于 2010-10-29T00:06:03.253 回答
29
于 2015-08-27T06:23:38.053 回答
15

Java Character 类从 1.0.2 版开始就有一个isLetterOrDigit方法

于 2015-02-12T09:23:16.513 回答
10

我不知道最好的,但这对我来说似乎很简单:

Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
于 2010-10-28T23:07:23.427 回答
6
// check if ch is a letter
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    // ...

// check if ch is a digit
if (ch >= '0' && ch <= '9')
    // ...

// check if ch is a whitespace
if ((ch == ' ') || (ch =='\n') || (ch == '\t'))
    // ...

来源:https ://docs.oracle.com/javase/tutorial/i18n/text/charintro.html

于 2017-03-09T15:02:45.657 回答
6

使用下面的代码

Character.isLetterOrDigit(string.charAt(index))

于 2018-08-27T22:44:00.803 回答
5

比较它的价值。它应该在'a'和'z'、'A'和'Z'、'0'和'9'的值之间

于 2010-10-28T23:05:56.477 回答
0
 import java.util.Scanner;
 public class v{
 public static void main(String args[]){
 Scanner in=new Scanner(System.in);
    String str;
    int l;
    int flag=0;
    System.out.println("Enter the String:");
    str=in.nextLine();
    str=str.toLowerCase();
    str=str.replaceAll("\\s","");
    char[] ch=str.toCharArray();
    l=str.length();
    for(int i=0;i<l;i++){
        if ((ch[i] >= 'a' && ch[i]<= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z')){
        flag=0;
        }
        else

        flag++;
        break;
        } 
if(flag==0)
    System.out.println("Onlt char");


}
}
于 2017-06-25T05:16:56.300 回答