【发布时间】:2011-05-02 03:50:29
【问题描述】:
在不使用正则表达式的情况下,识别 string.charAt(index) 是 Java 中的 A-z 字母还是数字的最佳和/或最简单的方法是什么?谢谢。
【问题讨论】:
在不使用正则表达式的情况下,识别 string.charAt(index) 是 Java 中的 A-z 字母还是数字的最佳和/或最简单的方法是什么?谢谢。
【问题讨论】:
使用下面的代码
Character.isLetterOrDigit(string.charAt(index))
【讨论】:
正如答案所示(如果您仔细检查它们!),您的问题是模棱两可的。 “A-z 字母”或数字是什么意思?
如果您想知道一个字符是 Unicode 字母还是数字,请使用Character.isLetter 和Character.isDigit 方法。
如果您想知道一个字符是 ASCII 字母还是数字,那么最好的办法是通过比较字符范围 'a' 到 'z' 来进行测试, 'A' 到 'Z' 和 '0' 到 '9'。
请注意,所有 ASCII 字母/数字都是 Unicode 字母/数字……但有许多 Unicode 字母/数字字符不是 ASCII。例如,重音字母、西里尔文、梵文、...
一般的解决办法是这样做:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
然后测试该块是否是您感兴趣的块之一。在某些情况下,您需要测试多个块。例如,西里尔字符(至少)有 4 个代码块,拉丁字符有 7 个代码块。 Character.UnicodeBlock 类为知名块定义静态常量;见javadocs。
请注意,任何代码点最多位于一个块中。
【讨论】:
【讨论】:
Character.isLetterOrDigit(string.charAt(index)) 进行两个验证。
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");
}
}
【讨论】:
// 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
【讨论】:
if a string.charAt(index) is an A-z letter。所以我们不是在谈论其他语言吗?
我正在寻找一个只检查它是拉丁字母还是十进制数字的函数。从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');
}
【讨论】:
u00ff 实际上是字符 ÿ。 (带有变音符号的小写 y。)表示 ├ 的代码点是 u251c。
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Java Character 类从 1.0.2 版本开始有一个 isLetterOrDigit 方法
【讨论】:
我不知道最好,但这对我来说似乎很简单:
Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
【讨论】:
比较它的价值。它应该在'a'和'z'、'A'和'Z'、'0'和'9'的值之间
【讨论】:
Character.isLetter()方式好用吗?
Character.isLetter() 是初级的。除非我们在谈论国际化?