如何检查一个字符是否等于一个空的空间?

这是我得到的:

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

但是该代码表示​​无法find该方法的符号。 我记得Java有这样的比较器…有什么build议吗?

 if (c == ' ') 

char是一个原始的数据types,所以它可以与==比较。

此外,通过使用双引号,您创buildString常量( " " ),而与单引号它是一个char常量( ' ' )。

你需要的代码取决于你的意思是“一个空的空间”。

  • 如果您的意思是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约定是方法名以小写字母开头。
  • 你的代码(正如所写的)试图比较一个字符和一个string,但是charString是不可比较的,不能转换为一个通用的基本types。

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

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

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


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

  if (c == " ") 

这失败的原因有两个:

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

  • 你应该永远不要使用==比较string或string。 引用types的==运算符比较对象标识,而不是对象值。 在String的情况下,通常有不同的对象具有不同的身份和相同的值。 一个==testing通常会给出错误的答案 …从你想要在这里做什么的angular度来看。

由于char是一个原始types,所以你可以只写c == ' '
你只需要调用equals()来引用types如StringCharacter

你可以使用

 Character.isWhitespace(c) 

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

  if (c == ' ') 

也有效。

我的build议是:

 if (c == ' ') 

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

 if (c == ' ') 

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

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

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

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

但是再次,我对"Equal"课不熟悉

你可以试试:

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

要么:

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

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

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

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