Je veux représenter un caractère vide en Java comme ""
dans String ...
Comme ça char ch = an empty character;
En fait, je veux remplacer un personnage sans laisser d'espace.
Je pense qu'il pourrait être suffisant de comprendre ce que cela signifie: pas de caractère pas même d'espace.
String.replace(' ', EMPTY_CHARACTER)
pour avoir le même effet queString.replace(" ", "")
. Ie supprimer tous les espaces.Réponses:
Vous pouvez attribuer
'\u0000'
(ou 0). Pour cela, utilisezCharacter.MIN_VALUE
.la source
'\0'
exactement? @AVDchar
signifie exactement un caractère. Vous ne pouvez pas attribuer aucun caractère à ce type.Cela signifie qu'il n'y a pas de valeur char pour laquelle
String.replace(char, char)
retournerait une chaîne avec une longueur différente.la source
Comme Character est une classe dérivée d'Object, vous pouvez affecter null comme "instance":
Problème résolu ;)
la source
Une chaîne vide est un wrapper sur un
char[]
sans éléments. Vous pouvez avoir un videchar[]
. Mais vous ne pouvez pas avoir un "vide"char
. Comme les autres primitives,char
a doit avoir une valeur.Vous dites que vous souhaitez "remplacer un caractère sans laisser d'espace".
Si vous avez affaire à un
char[]
, vous en créeriez un nouveauchar[]
avec cet élément supprimé.Si vous avez affaire à un
String
, vous créez alors un nouveauString
(String est immuable) avec le caractère supprimé.Voici quelques exemples de la façon dont vous pouvez supprimer un caractère:
la source
Comme cela
chars
peut être représenté par des entiers (codes ASCII), vous pouvez simplement écrire:Le 0 en code ASCII est
null
.la source
char
) est le codage UTF-16 complet pour le point de code Unicode U + 0000. Toute similitude avec un autre jeu de caractères ou encodage de caractères n'est pas pertinente. UTF-16 est ce que Java utilise.Si vous souhaitez remplacer un caractère dans une chaîne sans laisser d'espace vide, vous pouvez y parvenir en utilisant StringBuilder. La chaîne est un objet immuable en java, vous ne pouvez pas le modifier.
la source
Vous ne pouvez pas. "" est le littéral d'une chaîne, qui ne contient aucun caractère. Il ne contient pas le "caractère vide" (quoi que vous entendiez par là).
la source
Je cherchais ceci. Réglez simplement le
char c = 0;
et cela fonctionne parfaitement. Essayez-le.Par exemple, si vous essayez de supprimer les caractères en double d'une chaîne, une façon serait de convertir la chaîne en tableau de caractères et de la stocker dans un jeu de hachage de caractères qui empêcherait automatiquement les doublons.
Une autre façon, cependant, sera de convertir la chaîne en un tableau de caractères, d'utiliser deux boucles for et de comparer chaque caractère avec le reste du tableau de chaînes / caractères (une activité Big O sur N ^ 2), puis pour chaque doublon trouvé il suffit de mettre ce caractère à 0 ..
...et utilise
new String(char[])
pour convertir le tableau de caractères résultant en chaîne, puis sysout pour imprimer (tout cela est java btw). vous observerez que tous les caractères mis à zéro ne sont tout simplement pas là et tous les doublons ont disparu. long post, mais je voulais juste vous donner un exemple.donc oui défini
char c = 0;
ou si pour tableau de caractères, définicArray[i]=0
pour ce caractère dupliqué spécifique et vous l'aurez supprimé.la source
En java, il n'y a rien de littéral de caractère vide , en d'autres termes, '' n'a pas de sens contrairement à "" qui signifie un littéral de chaîne vide
Le plus proche que vous pouvez faire pour représenter un littéral de caractère vide est par le biais de char [] de longueur nulle, quelque chose comme:
Si vous faites référence à la classe String, son constructeur par défaut crée une séquence de caractères vide en utilisant
new char[0]
De plus, l'utilisation de Character.MIN_VALUE n'est pas correcte car ce n'est pas vraiment un caractère vide mais plutôt la plus petite valeur de type caractère.
Je n'aime pas non plus comme
Character c = null;
solution principalement parce que jvm lancera NPE s'il essaie de le décompresser. Deuxièmement, null est fondamentalement une référence à rien du type de référence et ici nous avons affaire à un type primitif qui n'accepte pas null comme valeur possible.En supposant que dans la chaîne, disons str, OP veut remplacer toutes les occurrences d'un caractère, disons 'x', par le caractère vide '', puis essayez d'utiliser:
la source
c'est comme ça que je fais.
la source
Le code ci-dessus initialisera la variable
ch
avec la valeur minimale qu'un caractère peut avoir (c'est-à-dire\u0000
).la source
Vous pouvez faire quelque chose comme ceci:
la source
Vous ne pouvez réutiliser qu'un personnage existant. Par exemple,
\0
si vous mettez ceci dans une chaîne, vous aurez une chaîne avec un caractère.Dis que tu veux un
char
tel que quand tu le faisce que vous devez faire à la place est
la source
it not worked
? Voulez-vous dire qu'il ne compile pas? Dans ce cas, ce seraitchar ch = '\0';
ouchar ch = 0;
nul
caractère est l'un des nombreux caractères spéciaux qui indique que c'est un caractère qui n'est pas vraiment là, mais il est lui-même toujours un caractère.Utilisez l'
\b
opérateur (l'opérateur d'échappement de retour arrière) dans le deuxième paramètrela source
Hé, je crée toujours des méthodes pour des trucs personnalisés qui ne sont généralement pas implémentés en java. Voici une méthode simple que j'ai faite pour supprimer un caractère de String Fast
Pour des explications, oui, il n'y a pas de caractère nul à remplacer, mais vous pouvez supprimer un caractère comme celui-ci. Je sais que c'est une vieille question, mais je poste cette réponse parce que ce code peut être utile pour certaines personnes.
la source