在不使用正则表达式的情况下,判断字符是Java中的字母还是数字的最佳方法是什么?
在不使用正则表达式的情况下,识别string.charAt(index)是Java中的A-z字母还是数字的最佳和/或最简单的方法是什么? 谢谢。
Daniel Sopel asked 2019-09-21T16:59:41Z
9个解决方案
157 votes
Character.isDigit(string.charAt(index))(JavaDoc)如果是数字将返回true
Character.isLetter(string.charAt(index))(JavaDoc)如果是字母,则返回true
Adam answered 2019-09-21T17:00:02Z
20 votes
如答案所示(如果您仔细检查了!),您的问题就模棱两可。 “ A-z字母”或数字是什么意思?
如果您想知道字符是Unicode字母还是数字,请使用Character.UnicodeBlock和Character.isDigit方法。
如果您想知道一个字符是ASCII字母还是数字,那么最好的方法是通过比较字符范围“ a”至“ z”,“ A”至“ Z”和“ 0”至'9'。
请注意,所有ASCII字母/数字都是Unicode字母/数字...但是,有许多不是ASCII的Unicode字母/数字字符。 例如,重音字母,西里尔字母,梵语,...
通用的解决方案是这样做:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
然后测试以查看该块是否是您感兴趣的块之一。在某些情况下,您将需要测试多个块。 例如,西里尔字母至少有4个代码块,拉丁语至少有7个代码块。 Character.UnicodeBlock类定义了众所周知的块的静态常量。 参见javadocs。
请注意,任何代码点最多只能包含一个块。
Stephen C answered 2019-09-21T17:01:17Z
16 votes
我正在寻找一个仅检查拉丁字母或十进制数字之一的函数。 自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');
}
mr5 answered 2019-09-21T17:01:44Z
10 votes
从1.0.2版开始,Java角色类具有isLetterOrDigit方法
ChuanRocks answered 2019-09-21T17:02:14Z
7 votes
我最不知道,但这对我来说似乎很简单:
Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
Cameron answered 2019-09-21T17:02:42Z
3 votes
比较其价值。 它应该在“ a”和“ z”,“ A”和“ Z”,“ 0”和“ 9”的值之间
YuppieNetworking answered 2019-09-21T17:03:09Z
2 votes
// 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]
retrazil answered 2019-09-21T17:03:41Z
-1 votes
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
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");
}
}
Gowtham Prasath answered 2019-09-21T17:03:59Z
-1 votes
使用下面的代码
Character.isLetterOrDigit(string.charAt(index))
Ram Repaka answered 2019-09-21T17:04:35Z