¿Hay algún carácter invisible que no se considere un espacio en blanco?

3 minutos de lectura

Avatar de usuario de CodeBlue
Código Azul

Estoy trabajando con un marco existente en el que tengo que establecer un determinado atributo en blanco si se cumplen algunas condiciones. Desafortunadamente, el marco no permite establecer solo espacios en blanco para el valor del atributo. En concreto, hace un

!(org.apache.commons.lang.StringUtils.isBlank(value)) comprobar el valor

¿Es posible omitir esto de alguna manera y establecer un valor que parezca en blanco/invisible a simple vista pero que no se considere un espacio en blanco?

Estoy usando un guión “-” en este momento, pero creo que sería interesante saber si es posible.

  • Puede verificar cómo trata  , es decir, el espacio sin interrupciones.

    – Kayamán

    12 de noviembre de 2013 a las 17:54


  • Lo consideraría un truco extremadamente feo … mejor use algo como un símbolo de guión (-) para indicar un valor vacío.

    – Pavel Horal

    12 de noviembre de 2013 a las 17:55

  • Sí, estoy usando dash en este momento, pero pensé que esta era una pregunta interesante.

    – Código Azul

    12 de noviembre de 2013 a las 17:56

  • Iterar sobre todos los valores posibles de char y comprobar (Buena suerte)

    – Sotirios Delimanolis

    12 de noviembre de 2013 a las 17:56


  • Qué tal si U+1F4A9? No está realmente vacío, pero es un buen marcador para contenido sin interés…

    – Holger

    12 de noviembre de 2013 a las 18:39

También hay (U+2800 BRAILLE PATTERN BLANK), que es un bloque Braille en blanco en lugar de un carácter de espacio.

  • ¡Dios mío… ESTO! ¡Tú, mi amigo, eres un genio! Necesitaba un “carácter en blanco” para cambiar/justificar una cadena de título a la izquierda, pero mi sistema de interfaz de usuario rechaza silenciosamente cualquier carácter a la derecha de la cadena que tenga el Unicode Whitespace_Property. Los caracteres de espacio de “ancho cero” que no son Whitespace_Property mencionados arriba/abajo son solo eso, ancho cero, por lo que no son de ayuda. Tampoco sería suficiente un punto o cualquier cosa que imprima píxeles de aspecto torpe. El personaje que mencionas es lo único que me funcionó. Te votaría 10 veces si pudiera. ¡GRACIAS!

    – electromagnético

    18 de enero de 2020 a las 5:43

  • Vaya, corrigiendo un error en lo que acabo de escribir: la designación del carácter de espacio en blanco de Unicode en realidad se llama White_Space propiedad. Descrito aquí: unicode.org/reports/tr44/#Espacio_Blanco

    – electromagnético

    18 de enero de 2020 a las 6:16

  • aquí porque quería crear ilustraciones de emoji en un mensaje de WhatsApp y WhatsApp recorta los espacios en blanco de la primera línea del mensaje… 🙃 ¡Esto funcionó! 😁💖

    – George WS

    4 de diciembre de 2020 a las 7:39

  • Esto funcionó para mí en iOS donde ZERO WIDTH SPACE todavía se recortaba automáticamente. Útil para correcciones de piratería para el recorte oblicuo de fuentes en vistas propiedad del sistema, como títulos de la barra de navegación.

    –Nathan Hosselton

    3 mayo 2021 a las 20:35

Avatar de usuario de Michael Konietzka
Michael Konietzka

Intentar Carácter Unicode ‘ESPACIO DE ANCHO CERO’ (U+200B). No es un espacio en blanco según WP: espacios en blanco # Unicode

el codigo de StringUtils.isBlank no lo molestará:

public static boolean isBlank(String str) {
int strLen;
if (str == null || (strLen = str.length()) == 0) {
          return true;
     }
for (int i = 0; i < strLen; i++) {
     if ((Character.isWhitespace(str.charAt(i)) == false)) {
                   return false;
                }
         }
 return true;
  }

  • Ese es un personaje extremadamente útil para saber, gracias. (Formularios de registro con un apellido requerido, etc.)

    – Tobía

    11 de agosto de 2017 a las 12:49

Avatar de usuario de Bugs Bunny
Bugs Bunny

Ese carácter Unicode ‘ZERO WIDTH SPACE’ (U+200B) que compartió Michael Konietzka no funcionó para mí, pero encontré uno diferente que sí:

‏‏‎ ‎

En realidad se identifica como una combinación de

U+200F : RIGHT-TO-LEFT MARK [RLM]
U+200F : RIGHT-TO-LEFT MARK [RLM]
U+200E : LEFT-TO-RIGHT MARK [LRM]
U+0020 : SPACE [SP]
U+200E : LEFT-TO-RIGHT MARK [LRM]

y su valor ASCII es 8207

‏‏‎'‏‏‎ ‎'.charCodeAt(0) // 8207

Fuente: http://emptycharacter.com/

  • 8207 puede ser un error tipográfico; por favor, compruebe personajevacío.com Debería ser 8287 como funcionó para mí

    – Jayanta

    21 de noviembre de 2020 a las 8:27

Avatar de usuario de Jayanta
Jayanta

JavaScript

String.fromCharCode(8287).repeat(30)

me dio espacios reales pero invisibles.

http://emptycharacter.com/ great

¿Ha sido útil esta solución?