如何检查一个字符是不是等于一个空格?

Posted

技术标签:

【中文标题】如何检查一个字符是不是等于一个空格?【英文标题】:How to check if a char is equal to an empty space?如何检查一个字符是否等于一个空格? 【发布时间】:2011-05-29 10:48:21 【问题描述】:

这是我得到的:

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

但是该代码说它找不到该方法的符号。我记得 Java 有一个这样的比较器...有什么建议吗?

【问题讨论】:

空白空间 - 没有内容的' ' 【参考方案1】:
if (c == ' ')

char是原始数据类型,所以可以和==比较。

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

【讨论】:

【参考方案2】:

您需要的代码取决于您所说的“空白空间”。

如果您指的是 ASCII / Latin-1 / Unicode 空格字符 (0x20) aka 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中有Comparator这样的东西,但它是一个接口而不是一个方法,它是这样声明的:

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

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


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

    if (c == " ")

失败有两个原因:

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

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

【讨论】:

【参考方案3】:

你可以使用

Character.isWhitespace(c)

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

  if (c == ' ')

也可以。

【讨论】:

好吧,这最终取决于他是否只检查空格。我的意思是如果它包含一个标签,你会得到一个误报。 已更新。他可以直接从 Character 做他需要的事情,尽管这有点过分了。【参考方案4】:

由于char 是原始类型,您可以只写c == ' '。 对于StringCharacter 等引用类型,您只需调用equals()

【讨论】:

【参考方案5】:

我的建议是:

if (c == ' ')

【讨论】:

【参考方案6】:

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

if (c == ' ')

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

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

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

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

【讨论】:

【参考方案10】:

你可以试试:

if(Character.isSpaceChar(ch))

    // Do something...

或者:

if((int) ch) == 32)

    // Do something...

【讨论】:

【参考方案11】:

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

if(c.equals(""))


【讨论】:

1) 这个问题是关于比较字符,而不是字符串。 2) Java 中没有equals 关键字。它是一个标识符。 3)由于cchar(原始类型!!),所以不能调用c.equals(...)。 4) 即使可以,也没有映射到""char 值。后者表示“其中没有字符”的字符串。那不能匹配一个字符。 回答这个问题的关键是想出在上下文中具有某种意义的“空白空间”的含义。

以上是关于如何检查一个字符是不是等于一个空格?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查url查询字符串是不是等于javascript(或jquery)[重复]

如何检查字符串是不是不等于 java 中的对象或其他字符串值?

如何检查字符串是不是包含字符和空格,而不仅仅是空格?

如何检查字符串中的空格?

如何检查我的字符串是不是等于null?

检查第一个字符串是不是小于或等于第二个字符串中的相应字母