标题几乎说明了一切,我如何检查char是否可以在java中输入? 而我所说的可输入的不仅仅是字母或数字,还有感叹号或空白等。
我不希望转义和退格字符等内容通过过滤器。
我知道Character.isLetter()
但这不是我想要的,结果太窄了。
当然我可以使用黑名单/白名单过滤器,但由于这样比较不方便,如果它们是一个,我宁愿选择更实用的解决方案。
答案 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 中定义有效字符。因此,对于上面的示例,正则表达式图如下所示:
答案 3 :(得分:0)
这是一个奇怪的问题,因为您不知道 char 来自哪个键盘。
如果您想检查 char 的性质,可以使用正则表达式:
char a = 'a';
String.valueOf(a).matches(".*"); // returns true
中详细了解正则表达式
现在,如果您想查看按键事件,您需要告诉我们您正在使用哪个API或框架,或者您尝试构建的应用程序类型,因为它会改变方式你可以检查这些事件。