繁体   English   中英

如何检查字符既不是Java中的字母也不是数字?

[英]How do I check if a character is neither a letter nor a digit in Java?

所以我用Java编写了一些代码,我试图找出是否有办法编写一行代码来检查字符串中的字符既不是字母也不是数字。 我知道:

Character.isDigit()检查一个数字

Character.isLetter()检查一个字母。

但我想知道java是否有可能检查这些代码中是否存在这些代码。 就像字符串中的字符是“/”或“*”或甚至“_”一样。

我是Java的新手,所以我不知道在这一点上去哪里。

Java为此提供了一种方法 - 您需要做的就是否定其结果:

if (!Character.isLetterOrDigit(ch)) {
    ...
}

您可以将两个调用组合在一个计算结果为布尔值的表达式中。

if (!(Character.isDigit()) && !(Character.isLetter()) ) {
    //The character is neither a digit nor a letter.
    // Do whatever
}

根据德摩根定律,您还可以表达如下相同的内容:

if (!((Character.isDigit()) || (Character.isLetter()) )) {
   //The statement "The character is a digit or a letter" is false.    
   // Do whatever
}

检查字符串中的字符既不是字母也不是数字的代码。

根据您的问题,我了解您要传递一个String并检查该String中的字符是否只是字母和数字,还是还有其他内容。

您可以使用正则表达式来检查String [^a-zA-Z0-9]

产量

loremipsum -> false
loremipsum999 -> false
loremipsum_ -> true
loremipsum/ -> true

输入

import java.util.regex.*;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("loremipsum -> " + checkForCharAndDigits("loremipsum"));
        System.out.println("loremipsum999 -> " + checkForCharAndDigits("loremipsum999"));
        System.out.println("loremipsum_ -> " + checkForCharAndDigits("loremipsum_"));
        System.out.println("loremipsum/ -> " + checkForCharAndDigits("loremipsum/"));
    }

    public static boolean checkForCharAndDigits(String str) {
        Matcher m = Pattern.compile("[^a-zA-Z0-9]").matcher(str);
        if (m.find()) return true;
        else          return false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM