你如何检查Java中的char是否可以输入?

时间:2015-05-06 21:05:13

标签: java text unicode char

标题几乎说明了一切,我如何检查char是否可以在java中输入? 而我所说的可输入的不仅仅是字母或数字,还有感叹号或空白等。

我不希望转义和退格字符等内容通过过滤器。

我知道Character.isLetter()但这不是我想要的,结果太窄了。

当然我可以使用黑名单/白名单过滤器,但由于这样比较不方便,如果它们是一个,我宁愿选择更实用的解决方案。

4 个答案:

答案 0 :(得分:2)

您可以使用其中一种Character.isISOControl方法,如果它是一个控制字符,那么就我认为你的意思而言它类型。

来自wikipedia

  

在计算和电信中,控制字符或非打印字符是字符集中的代码点(数字),不代表书面符号。

答案 1 :(得分:0)

我认为最好的方法是使用正则表达式。您可以准确指定哪些字符是"可输入"。

答案 2 :(得分:0)

从String的角度来看,将char作为单个字符串,可以使用正则表达式(带有字符类)来定义您认为有效的字符。

例如,你可以这样:

assertTrue("a".matches("[\\w!?/-]")); // Bear in mind that \w is [a-zA-Z0-9]
assertTrue("!".matches("[\\w!?/-]"));
assertTrue("?".matches("[\\w!?/-]"));
assertFalse(":".matches("[\\w!?/-]"));

因此,您可以在正则表达式字符类中定义有效字符的内容。更详细的示例可以是:

String charToTest = "W";
String validCharsRegex = "^[A-Za-z0-9!@#$%^&*)(-]$"; // Put withing [...] what
                                                     //  you consider valid characters

if (charToTest.matches(validCharsRegex))
    System.out.println("Valid character");
else
    System.out.println("Invalid character");

您可以将所有字符放在[]中,从而在 regex character class 中定义有效字符。因此,对于上面的示例,正​​则表达式图如下所示:

Regular expression visualization

答案 3 :(得分:0)

这是一个奇怪的问题,因为您不知道 char 来自哪个键盘。

如果您想检查 char 的性质,可以使用正则表达式:

char a = 'a';
String.valueOf(a).matches(".*"); // returns true

Pattern

中详细了解正则表达式

现在,如果您想查看按键事件,您需要告诉我们您正在使用哪个API或框架,或者您尝试构建的应用程序类型,因为它会改变方式你可以检查这些事件。