如果string.charAt(index)是Java中的Az字母或数字而不使用正则表达式,最好和/或最简单的方法是什么?谢谢.
Ada*_*dam 204
Character.isDigit(string.charAt(index))(JavaDoc的),如果它是一个数字将返回true
Character.isLetter(string.charAt(index))(JavaDoc的)将返回true,如果它是一个字母
Ste*_*n C 21
如答案所示(如果你仔细检查它们),你的问题就不明确了.你是什么意思"阿兹字母"或数字?
如果您想知道某个字符是否为Unicode字母或数字,请使用Character.isLetter和Character.isDigit方法.
如果你想知道某个字符是ASCII字母还是数字,那么最好的办法是通过比较字符范围'a'到'z','A'到'Z'和'0'来测试'9'.
请注意,所有ASCII字母/数字都是Unicode字母/数字......但是有许多Unicode字母/数字字符不是ASCII.例如,重音字母,西里尔字母,梵语,......
一般的解决方案是这样做:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
Run Code Online (Sandbox Code Playgroud)
然后测试以查看该块是否是您感兴趣的块之一.在某些情况下,您将需要测试多个块.例如,西里尔字符有(至少)4个代码块,拉丁语有7个代码块.在Character.UnicodeBlock类定义公知的块静态常量; 看到javadocs.
请注意,任何代码点最多都在一个块中.
mr5*_*mr5 18
我正在寻找一个只检查拉丁字母或十进制数字之一的函数.因为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');
}
Run Code Online (Sandbox Code Playgroud)
我不知道最好的,但这对我来说似乎很简单:
Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
Run Code Online (Sandbox Code Playgroud)
// 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'))
// ...
Run Code Online (Sandbox Code Playgroud)
来源:https : //docs.oracle.com/javase/tutorial/i18n/text/charintro.html
| 归档时间: |
|
| 查看次数: |
250153 次 |
| 最近记录: |