Eu quero representar um caractere vazio em Java como ""
em String ...
Curtiu isso char ch = an empty character;
Na verdade, quero substituir um personagem sem deixar espaço.
Eu acho que pode ser suficiente entender o que isso significa: nenhum personagem, nem mesmo o espaço.
String.replace(' ', EMPTY_CHARACTER)
para ter o mesmo efeito queString.replace(" ", "")
. Ou seja, remova todos os espaços.Respostas:
Você pode atribuir
'\u0000'
(ou 0). Para esse fim, useCharacter.MIN_VALUE
.fonte
'\0'
exatamente significa? @AVDchar
significa exatamente um caractere. Você não pode atribuir zero caracteres a esse tipo.Isso significa que não há um valor de char para o qual
String.replace(char, char)
retornaria uma string com um comprimento diferente.fonte
Como Character é uma classe derivada de Object, você pode atribuir null como "instance":
Problema resolvido ;)
fonte
Uma String vazia é um invólucro em um
char[]
sem elementos. Você pode ter um vaziochar[]
. Mas você não pode ter um "vazio"char
. Como outras primitivas, achar
tem que ter um valor.Você diz que deseja "substituir um personagem sem deixar espaço".
Se você estiver lidando com um
char[]
, crie um novochar[]
com esse elemento removido.Se você estiver lidando com um
String
, crie um novoString
(String é imutável) com o caractere removido.Aqui estão alguns exemplos de como você pode remover um caractere:
fonte
Como
chars
pode ser representado como Inteiros (códigos ASCII), você pode simplesmente escrever:O 0 no código ASCII é
null
.fonte
char
) é a codificação UTF-16 completa para o ponto de código Unicode U + 0000. Qualquer semelhança com algum outro conjunto de caracteres ou codificação de caracteres é irrelevante. UTF-16 é o que Java usa.Se você deseja substituir um caractere em uma String sem deixar espaço em branco, é possível fazer isso usando StringBuilder. String é um objeto imutável em java, você não pode modificá-lo.
fonte
Você não pode. "" é o literal de uma sequência que não contém caracteres. Ele não contém o "caractere vazio" (o que você quer dizer com isso).
fonte
Eu estava procurando por isso. Basta definir o
char c = 0;
e ele funciona perfeitamente. Tente.Por exemplo, se você estiver tentando remover caracteres duplicados de uma String, uma maneira seria converter a string em array de caracteres e armazenar em um hashset de caracteres que impediria automaticamente duplicatas.
Outra maneira, no entanto, será converter a string em uma matriz de caracteres, usar dois loops for e comparar cada caractere com o restante da matriz de caracteres / caracteres (uma atividade Big O em N ^ 2) e, em seguida, para cada duplicata encontrada basta definir esse caracter para 0 ..
... e use
new String(char[])
para converter a matriz de caracteres resultante em string e, em seguida, sysout para imprimir (isso é tudo java btw). você observará que todos os caracteres definidos como zero simplesmente não estão lá e todas as duplicatas se foram. post longo, mas só queria dar um exemplo.então sim, defina
char c = 0;
ou se, para matriz de caracteres, definacArray[i]=0
esse caractere duplicado específico e você o removerá.fonte
Em java, não há nada como literal de caractere vazio ; em outras palavras, '' não tem significado diferente de "", o que significa um literal String vazio
O mais próximo que você pode representar um caractere vazio de caracteres é através de um caractere de comprimento zero [], algo como:
Se você se referir à classe String, o construtor padrão cria uma sequência de caracteres vazia usando
new char[0]
Além disso, o uso de Character.MIN_VALUE não está correto porque não é realmente um caractere vazio, e sim o menor valor do caractere de tipo.
Também não gosto
Character c = null;
como solução, principalmente porque o jvm lançará o NPE se tentar desempacotá-lo. Em segundo lugar, nulo é basicamente uma referência a nada, e aqui estamos lidando com o tipo primitivo que não aceita nulo como um valor possível.Supondo que na string, digamos str, o OP queira substituir todas as ocorrências de um caractere, diga 'x', por caractere vazio '' e tente usar:
fonte
é assim que eu faço.
fonte
O código acima inicializará a variável
ch
com o valor mínimo que um caractere pode ter (ou seja\u0000
).fonte
Você pode fazer algo assim:
fonte
Você só pode reutilizar um personagem existente. Por exemplo,
\0
se você colocar isso em uma String, terá uma String com um caractere.Digamos que você queira
char
tal que, quando fizer isso,o que você precisa fazer é
fonte
it not worked
? Você quer dizer que não compila? Nesse caso, seriachar ch = '\0';
ouchar ch = 0;
nul
personagem é um dos muitos personagens especiais que indica que é um personagem que realmente não existe, mas ainda é um personagem.Use o
\b
operador (o operador de escape de backspace) no segundo parâmetrofonte
Ei, eu sempre faço métodos para coisas personalizadas que geralmente não são implementadas em java. Aqui está um método simples que eu fiz para remover caracteres do String Fast
Para explicação, sim, não há caractere nulo para substituição, mas você pode remover caracteres como este. Sei que é uma pergunta antiga, mas estou postando esta resposta porque esse código pode ser útil para algumas pessoas.
fonte