如何检查一个字符是不是等于一个空格?
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 约定是方法名称以小写字母开头。
您的代码(如所编写的)试图比较一个字符和一个字符串,但 char
和 String
不可比较,不能转换为通用的基本类型。
Java中有Comparator这样的东西,但它是一个接口而不是一个方法,它是这样声明的:
public interface Comparator<T>
public int compare(T v1, T v2);
换句话说,方法名是compare
(不是Equals
),它返回一个整数(不是布尔值),它比较两个可以提升为type参数给定的类型的值。
有人(在已删除的答案中!)说他们尝试过这个:
if (c == " ")
失败有两个原因:
" "
是字符串文字而非字符文字,Java 不允许直接比较 String
和 char
的值。
永远不要使用==
比较字符串或字符串文字。引用类型上的 ==
运算符比较对象标识,而不是对象值。在String
的情况下,不同的对象具有不同的身份和相同的值是很常见的。 ==
测试通常会给出错误的答案 ...从您在此处尝试执行的操作的角度来看。
【讨论】:
【参考方案3】:你可以使用
Character.isWhitespace(c)
或 Character 类中的任何其他可用方法。
if (c == ' ')
也可以。
【讨论】:
好吧,这最终取决于他是否只检查空格。我的意思是如果它包含一个标签,你会得到一个误报。 已更新。他可以直接从 Character 做他需要的事情,尽管这有点过分了。【参考方案4】:由于char
是原始类型,您可以只写c == ' '
。
对于String
或Character
等引用类型,您只需调用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)由于c
是char
(原始类型!!),所以不能调用c.equals(...)
。 4) 即使可以,也没有映射到""
的char
值。后者表示“其中没有字符”的字符串。那不能匹配一个字符。
回答这个问题的关键是想出在上下文中具有某种意义的“空白空间”的含义。以上是关于如何检查一个字符是不是等于一个空格?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查url查询字符串是不是等于javascript(或jquery)[重复]