在不使用正则表达式的情况下,在 Java 中判断一个字符是字母还是数字的最佳方法是什么?

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

430587 次浏览

比较它的值,它应该在‘ a’和‘ z’之间,‘ A’和‘ Z’之间,‘0’和‘9’之间

如果是一个数字,Character.isDigit(string.charAt(index))(JavaDoc)将返回 true
如果它是一个字母,Character.isLetter(string.charAt(index))(JavaDoc)将返回 true

我不知道什么是最好的,但我觉得很简单:

Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))

正如答案所示(如果你仔细检查它们的话!)你的问题很模棱两可。你说的“ A-Z 字母”或数字是什么意思?

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

  • 如果您想知道一个字符是 ASCII字母还是数字,那么最好的方法是通过比较字符范围‘ a’到‘ z’、‘ A’到‘ Z’和‘0’到‘9’来进行测试。

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


一般的解决办法是这样做:

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

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

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

Java 字符类从1.0.2版开始就有一个 是字母或数字方法

我正在寻找一个函数,只检查它是一个拉丁字母或十进制数。因为 char c = 255,在可打印的版本是 草坪,并认为作为一个字母的 Character.isLetter(c)。 我认为大多数开发人员都在寻找这个功能:

private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
// 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

 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");




}
}

使用下面的代码

Character.isLetterOrDigit(string.charAt(index))