如何检查char是否等于空格?

时间:2010-12-22 14:25:06

标签: java char whitespace

这就是我所拥有的:

private static int countNumChars(String s) {
    for(char c : s.toCharArray()){
        if (Equals(c," "))
    }
}

但该代码表示​​找不到该方法的符号。我记得Java有这样的比较器...有什么建议吗?

11 个答案:

答案 0 :(得分:194)

if (c == ' ')

char是原始数据类型,因此可以与==进行比较。

此外,通过使用双引号,您可以创建String常量(" "),而使用单引号时,它是char常量(' ')。

答案 1 :(得分:84)

您需要的代码取决于“空白区域”的含义。

  • 如果您的意思是ASCII / Latin-1 / Unicode空格字符(0x20)又名SP,那么:

    if (ch == ' ') {
        // ...
    }
    
  • 如果您指的是任何传统的ASCII空白字符(SP,HT,VT,CR,NL),那么:

    if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
        // ...
    }
    
  • 如果您的意思是任何Unicode空白字符,那么:

    if (Character.isWhitespace(ch)) {
        // ...
    }
    

请注意,在较高代码平面中有Unicode空格包含附加 ASCII控制代码,其他一些Unicode字符;请参阅Character.isWhitespace(char)的javadoc。


你写的是:

    if (Equals(ch, " ")) {
        // ...
    }

这在许多层面都是错误的。首先,Java编译器尝试解释的方式是调用签名为boolean Equals(char, String)的方法。

  • 这是错误的,因为没有方法存在,正如编译器在错误消息中报告的那样。
  • Equals通常不会是方法的名称。 Java约定是方法名称以小写字母开头。
  • 您的代码(已编写)试图比较字符和字符串,但charString无法比较,无法转换为公共基类型。

在Java中有比较器这样的东西,但它是一个接口而不是一个方法,并且声明如下:

    public interface Comparator<T> {
        public int compare(T v1, T v2);
    }

换句话说,方法名称为compare(不是Equals),它返回一个整数(不是布尔值),并将两个可以提升的值进行比较。类型参数。


某人(在删除的答案中!)说他们试过这个:

    if (c == " ")

失败有两个原因:

  • " "是字符串文字,而不是字符文字,Java不允许直接比较Stringchar值。

  • 您不应该使用==比较字符串或字符串文字。引用类型上的==运算符比较对象标识,而不是对象值。在String的情况下,具有不同身份和相同值的不同对象是常见的。从您在此处尝试的角度来看,==测试经常会给出错误答案 ....

答案 2 :(得分:20)

您可以使用

Character.isWhitespace(c)

或Character类中的任何其他可用方法。

  if (c == ' ')

也有效。

答案 3 :(得分:19)

由于char是基本类型,因此您只需编写c == ' ' 您只需为equals()String等参考类型致电Character

答案 4 :(得分:12)

我的建议是:

if (c == ' ')

答案 5 :(得分:11)

要比较字符,请使用==运算符:

if (c == ' ')

答案 6 :(得分:3)

在这种情况下,您正在考虑字符串比较函数"String".equals("some_text")。字符不需要使用此功能。相反,标准==比较运算符就足够了。

private static int countNumChars(String s) {
    for(char c : s.toCharArray()){
        if (c == ' ') // your resulting outcome
    }
}

答案 7 :(得分:3)

乍一看,您的代码无法编译。由于嵌套的if语句没有任何大括号,因此它会考虑下一行应该执行的代码。此外,您正在将字符串与字符串“”进行比较。尝试将这些值作为字符进行比较。我认为正确的语法是:

if(c == ' '){
   //do something here
}

但话说回来,我不熟悉"Equal"

答案 8 :(得分:3)

Character.isSpaceChar(c) || Character.isWhitespace(c)为我工作。

答案 9 :(得分:2)

您可以尝试:

if(Character.isSpaceChar(ch))
{
    // Do something...
}

或者:

if((int) ch) == 32)
{
    // Do something...
}

答案 10 :(得分:-3)

要比较Strings,您必须使用等于关键字。

if(c.equals(""))
{
}