Quiero representar un carácter vacío en Java como ""
en String ...
Como eso char ch = an empty character;
En realidad quiero reemplazar un personaje sin dejar espacio.
Creo que podría ser suficiente entender lo que esto significa: ningún personaje, ni siquiera el espacio.
String.replace(' ', EMPTY_CHARACTER)
para tener el mismo efecto queString.replace(" ", "")
. Es decir, eliminar todos los espacios.Respuestas:
Puede asignar
'\u0000'
(o 0). Para este propósito, useCharacter.MIN_VALUE
.fuente
'\0'
exactamente? @AVDchar
significa exactamente un personaje. No puede asignar cero caracteres a este tipo.Eso significa que no hay un valor de carácter para el que
String.replace(char, char)
se devuelva una cadena con una longitud diferente.fuente
Como Character es una clase derivada de Object, puede asignar nulo como "instancia":
Problema resuelto ;)
fuente
Una cadena vacía es un contenedor en un
char[]
sin elementos. Puedes tener un vacíochar[]
. Pero no puedes tener un "vacío"char
. Al igual que otras primitivas, achar
tiene que tener un valor.Dices que quieres "reemplazar un personaje sin dejar un espacio".
Si está tratando con un
char[]
, entonces crearía uno nuevochar[]
con ese elemento eliminado.Si está tratando con un
String
, entonces crearía un nuevoString
(String es inmutable) con el carácter eliminado.Aquí hay algunas muestras de cómo puedes eliminar un char:
fuente
Como
chars
se puede representar como enteros (códigos ASCII), simplemente puede escribir:El 0 en el código ASCII es
null
.fuente
char
) es la codificación completa UTF-16 para el punto de código Unicode U + 0000. Cualquier similitud con algún otro conjunto de caracteres o codificación de caracteres es irrelevante. UTF-16 es lo que usa Java.Si desea reemplazar un carácter en una Cadena sin dejar ningún espacio vacío, puede hacerlo utilizando StringBuilder. La cadena es un objeto inmutable en Java, no puede modificarlo.
fuente
No puedes "" es el literal de una cadena, que no contiene caracteres. No contiene el "carácter vacío" (lo que quiera decir con eso).
fuente
Yo estaba buscando esto. Simplemente configure el
char c = 0;
y funciona perfectamente. Intentalo.Por ejemplo, si está tratando de eliminar caracteres duplicados de una Cadena, una forma sería convertir la cadena en una matriz de caracteres y almacenarla en un hashset de caracteres que evitaría automáticamente duplicados.
Sin embargo, otra forma será convertir la cadena en una matriz de caracteres, usar dos bucles for y comparar cada carácter con el resto de la matriz de cadenas / caracteres (una gran O en la actividad N ^ 2), luego para cada duplicado encontrado solo pon ese char a 0 ..
... y se usa
new String(char[])
para convertir la matriz de caracteres resultante en una cadena y luego en sysout para imprimir (todo esto es java por cierto). observará que todos los caracteres configurados en cero simplemente no están allí y todos los duplicados se han ido. publicación larga, pero solo quería darte un ejemplo.así que sí,
char c = 0;
o si es para una matriz de caracteres, configúrelocArray[i]=0
para ese carácter duplicado específico y lo habrá eliminado.fuente
En java no hay nada como literal de caracteres vacío , en otras palabras, '' no tiene ningún significado a diferencia de "", que significa un literal de cadena vacío
Lo más cercano que puede hacer para representar caracteres literales vacíos es a través de char de longitud cero [], algo así como:
Si hace referencia a la clase String, su constructor predeterminado crea una secuencia de caracteres vacía utilizando
new char[0]
Además, el uso de Character.MIN_VALUE no es correcto porque no es realmente un carácter vacío, sino el valor más pequeño del carácter de tipo.
Tampoco me gusta
Character c = null;
como solución principalmente porque jvm arrojará NPE si intenta desempaquetarlo. En segundo lugar, nulo es básicamente una referencia a nada tipo de referencia wrt y aquí estamos tratando con un tipo primitivo que no acepta nulo como un posible valor.Suponiendo que en la cadena, digamos str, OP quiere reemplazar todas las apariciones de un carácter, diga 'x', con un carácter vacío '', luego intente usar:
fuente
Así es como lo hago.
fuente
El código anterior inicializará la variable
ch
con el valor mínimo que puede tener un carácter (es decir\u0000
).fuente
Puedes hacer algo como esto:
fuente
Solo puedes reutilizar un personaje existente. por ejemplo,
\0
si pones esto en una cadena, tendrás una cadena con un carácter.Digamos que quieres un
char
tal que cuando lo haceslo que tienes que hacer es
fuente
it not worked
? ¿Quieres decir que no se compila? En ese caso seríachar ch = '\0';
ochar ch = 0;
nul
personaje es uno de los muchos caracteres especiales que indica que es un personaje que realmente no está allí, pero en sí mismo sigue siendo un personaje.Use el
\b
operador (el operador de escape de retroceso) en el segundo parámetrofuente
Hola, siempre hago métodos para cosas personalizadas que generalmente no se implementan en Java. Aquí hay un método simple que hice para eliminar caracteres de String Fast
Para explicación, sí, no hay caracteres nulos para reemplazar, pero puede eliminar caracteres como este. Sé que es una pregunta antigua, pero estoy publicando esta respuesta porque este código puede ser útil para algunas personas.
fuente