Saltar al contenido

¿Cómo comprobar si un carácter es igual a un espacio vacío?

Investigamos por diferentes espacios para así tenerte la solución para tu problema, si continúas con dudas puedes dejar un comentario y te contestamos porque estamos para servirte.

Solución:

if (c == ' ')

char es un tipo de datos primitivo, por lo que se puede comparar con ==.

Además, al usar comillas dobles creas String constante (" "), mientras que con comillas simples es un char constante (' ').

El código que necesita depende de lo que quiera decir con “un espacio vacío”.

  • Si te refieres al carácter de espacio ASCII / Latin-1 / Unicode (0x20) también conocido como SP, entonces:

    if (ch == ' ') 
        // ...
    
    
  • Si se refiere a cualquiera de los caracteres de espacio en blanco ASCII tradicionales (SP, HT, VT, CR, NL), entonces:

    if (ch == ' ' || ch == 't' || ch == 'r' || ch == 'n' || ch == 'x0b') 
        // ...
    
    
  • Si te refieres a cualquier carácter de espacio en blanco Unicode, entonces:

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

Tenga en cuenta que hay espacios en blanco Unicode incluidos adicional códigos de control ASCII, y algunos otros caracteres Unicode en planos de código superiores; ver el javadoc para Character.isWhitespace(char).


Lo que escribiste fue esto:

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

Esto está mal en varios niveles. En primer lugar, la forma en que el compilador de Java intenta interpretar eso es como una llamada a un método con una firma de boolean Equals(char, String).

  • Esto es incorrecto porque no existe ningún método, como informó el compilador en el mensaje de error.
  • Equals normalmente no sería el nombre de un método de todos modos. La convención de Java es que los nombres de los métodos comienzan con una letra minúscula.
  • Su código (tal como está escrito) estaba tratando de comparar un carácter y una Cadena, pero char y String no son comparables y no se pueden convertir a un tipo base común.

Existe un comparador en Java, pero es una interfaz, no un método, y se declara así:

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

En otras palabras, el nombre del método es compare (no Equals), devuelve un número entero (no un booleano) y compara dos valores que se pueden promocionar al tipo dado por el parámetro de tipo.


Alguien (¡en una respuesta eliminada!) dijo que intentó esto:

    if (c == " ")

Eso falla por dos razones:

  • " " es un literal de cadena y no un literal de carácter, y Java no permite la comparación directa de String y char valores.

  • NUNCA debe comparar cadenas o literales de cadena usando ==. los == El operador en un tipo de referencia compara la identidad del objeto, no el valor del objeto. En el caso de String es común tener diferentes objetos con diferente identidad y el mismo valor. Un == voluntad de prueba a menudo dan la respuesta incorrecta … desde la perspectiva de lo que está tratando de hacer aquí.

podrías usar

Character.isWhitespace(c)

o cualquiera de los otros métodos disponibles en la clase Character.

  if (c == ' ')

también funciona

Recuerda que tienes la capacidad de aclarar si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *