如何检查一个字符是否为空

4
我想检查字符是否为空,但为什么这段代码不起作用?letterChar == null也不起作用。我在谷歌上搜索了很多问题,但没有看到任何解决方案,大多数解决方案都是关于String的。
String letter = enterletter.getText().toString();
char letterChar = letter.charAt(0);


if(letterChar == ' ' || letterChar == NULL) // this is where the code won't works
{
    Toast.makeText(getApplicationContext(), "Please enter a letter!", Toast.LENGTH_LONG).show();
}

字符?为什么不使用字符串? - statosdotcom
https://dev59.com/x3E85IYBdhLWcg3w9onw - ADM
@statosdotcom 因为我希望用户只输入字符。 - Cheeseburger
你可以通过以下代码实现你的目标:String letter = enterletter.getText().toString().trim(); // 这将删除空格 if (letter.length() < 1) { Toast.makeText(getApplicationContext(), "请输入一个字母!", Toast.LENGTH_LONG).show(); } - Meet Patel
@burger,检查下面的答案,它会起作用的。 - Sachin Rajput
3个回答

6

char是一种原始类型,因此它不能为null,您无法检查它是否等于null,您需要找到一个解决方法。

另外,您想检查letterChar == ' '是空格还是空字符串吗?因为您在那里有一个空格。

前两个答案here可能对您如何检查String letter是否为空有所帮助。

或者char letterChar转换为int并检查它是否等于0,因为char的默认值是\u0000(ASCII表上的nul字符,而不是null引用,这就是您说letterChar == null时要检查的内容),转换后将是0


2

char是一种原始数据类型,因此无法用于检查null。

对于您的情况,可以像这样检查。

        if (letterChar  == 0) //will be checked implicitly
        {
            System.out.println("null");
        }
        //or use this
        if (letterChar  == '\0')
        {
            System.out.println("null");
        }

-1

从你的代码来看,似乎你正在使用Unicode,并且你搜索的方法是在Character类(java.lang)中。

Character.isLetter(ch);

它还包含许多有用的静态方法,可以适合您的需求。 如果是这样,代码将会是

String letter = enterletter.getText().toString();
char letterChar = letter.charAt(0);

if(!Character.isLetter(letterChar))
{
    Toast.makeText(getApplicationContext(), "Please enter a letter!", Toast.LENGTH_LONG).show();
}

但是如果我需要回答你的问题(不看你的目的),那么你需要的代码取决于你所说的“char是否为空”的含义。
在Java中,char不能== null。 如果你想检查它是否不是一个空格,你需要这样做。
 if (ch == ' ')

如果您想检查是否没有换行符(空格、HT、VT、CR、NL和其他),则应将以下内容添加到上面提供的内容中:

if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接