检查字符是否是拉丁字母的一部分?

时间:2012-02-06 02:09:15

标签: java

在进一步处理之前,我需要测试字符是字母还是空格。所以,我

    for (Character c : take.toCharArray()) {
        if (!(Character.isLetter(c) || Character.isSpaceChar(c)))
            continue;

        data.append(c);

一旦我检查了数据,我看到它包含的字符看起来像拉丁字母表外的字符的unicode表示。如何修改上面的代码以收紧条件,只接受[a-z] [A-Z]范围内的字母字符?

Regex是一种可行的方式,还是有一种更好(更快)的方式?

3 个答案:

答案 0 :(得分:15)

如果您特别想要处理这52个字符,那么只需处理它们:

public static boolean isLatinLetter(char c) {
    return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
}

答案 1 :(得分:2)

如果您只想删除非ASCII字母字符,那么快速方法是使用String.replaceAll()和Regex:

s.replaceAll("[^a-zA-Z]", "")

不能说出性能与字符扫描相关的任何内容,并附加到StringBuilder

答案 2 :(得分:1)

我会使用您为此指定的正则表达式。它易于阅读并且应该非常快速(特别是如果你静态分配它)。