如果我想使用 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-zA-ZisDigit 也是如此;除了 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 the matches 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 中的特殊字符怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

Java:使用 if 条件检查 char 变量的内容

如何检查字符串中的特殊字符?

Java中的char究竟能存中文吗?

Java保留字和关键字

比较Java中的字符

java检查char是不是是switch case语句中的数字[关闭]