如果我想使用 char 检查 Java 中的特殊字符怎么办?
Posted
技术标签:
【中文标题】如果我想使用 char 检查 Java 中的特殊字符怎么办?【英文标题】:What do I do if I want to check for a special character in Java using char? 【发布时间】:2017-08-16 11:12:16 【问题描述】:我想创建一个程序来检查任何输入的字符是否是特殊字符。问题是我不知道该怎么做:要么检查特殊字符,要么检查 ASCII 值。谁能告诉我是否可以使用“if”语句检查数字 ASCII 值还是需要检查每个特殊字符?
【问题讨论】:
如果有一个你可以经常使用的表达式来做到这一点......嗯,真的很遗憾 特殊字符...不是 [a-zA-Z0-9] ? 你能澄清你的问题吗?也许给我们一些例子,并澄清你所说的 special 的意思。 JAVA: check a string if there is a special character in it的可能重复 【参考方案1】:您可以使用 isLetter(char c) 和 isDigit(char c)。你可以这样做:
char c;
//assign c in some way
if(!Character.isLetter(c) && !Character.isDigit(c))
//do something in case of special character
else
//do something for non-special character
编辑:正如 cmets 中所指出的,改用 isLetterOrDigit(char c) 可能更可行。
EDIT2:正如 ostrichofevil 所指出的(当我发布答案时我没有想到或不知道)这个解决方案不会将“非特殊”字符限制为 AZ、az 和 0- 9,但将包括在 Unicode 中被视为字母或数字的任何内容。这可能使 ostrichofevil 的答案在大多数情况下成为更实际的解决方案。
【讨论】:
请注意,Character.isLetter
将对任何归类为字母的 Unicode 字符返回 true,而不仅仅是字母 a-z 和 A-Z。 isDigit
也是如此;除了 0-9 以外,还有其他字符被归类为数字。
使用!Character.isLetterOrDigit(c);
而不是使用&&操作。但是,$ _
等的代码将返回 true。【参考方案2】:
你可以使用regex(正则表达式):
if (String.valueOf(character).matches("[^a-zA-Z0-9]"))
//Your code
if
语句中的代码将在字符不是字母数字时执行。 (空格会算作特殊字符。)如果您不希望空格算作特殊字符,请将字符串更改为"[^a-zA-Z0-9\\s]"
。
进一步阅读:
JavaDoc for thematches
method
An excellent regex tutorial
More info about regex in Java
A regex builder (pointed out by @Wietlol)
【讨论】:
也许添加一个指向regex101.com 的链接?如果你想构建一个正则表达式,它是完美的【参考方案3】:你可以通过这种方式实现它:
char[] specialCh = '!','@',']','#','$','%','^','&','*'; // you can specify all special characters in this array
boolean hasSpecialChar = false;
char current;
for (Character c : specialCh)
if (current == c)
hasSpecialChar = true;
【讨论】:
以上是关于如果我想使用 char 检查 Java 中的特殊字符怎么办?的主要内容,如果未能解决你的问题,请参考以下文章