【问题标题】:What do I do if I want to check for a special character in Java using char?如果我想使用 char 检查 Java 中的特殊字符怎么办?
【发布时间】:2017-08-16 11:12:16
【问题描述】:

我想创建一个程序来检查任何输入的字符是否是特殊字符。问题是我不知道该怎么做:要么检查特殊字符,要么检查 ASCII 值。谁能告诉我是否可以使用“if”语句检查数字 ASCII 值还是需要检查每个特殊字符?

【问题讨论】:

  • 如果有一个你可以经常使用的表达式来做到这一点......嗯,真的很遗憾
  • 特殊字符...不是 [a-zA-Z0-9] ?
  • 你能澄清你的问题吗?也许给我们一些例子,并澄清你所说的 special 的意思。

标签: java if-statement char


【解决方案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]"

进一步阅读:

【讨论】:

  • 也许添加一个指向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;
      }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多