Ich möchte ein leeres Zeichen in Java wie ""
in String darstellen ...
So wie das char ch = an empty character;
Eigentlich möchte ich einen Charakter ersetzen, ohne Platz zu lassen.
Ich denke, es könnte ausreichen zu verstehen, was dies bedeutet: kein Charakter, nicht einmal Leerzeichen.
String.replace(' ', EMPTY_CHARACTER)
den gleichen Effekt zu erzielen wieString.replace(" ", "")
. Dh alle Leerzeichen entfernen.Antworten:
Sie können zuweisen
'\u0000'
(oder 0). Verwenden Sie zu diesem ZweckCharacter.MIN_VALUE
.quelle
'\0'
genau? @ AVDchar
bedeutet genau ein Zeichen. Sie können diesem Typ keine Nullzeichen zuweisen.Das bedeutet, dass es keinen Zeichenwert gibt, für den
String.replace(char, char)
eine Zeichenfolge mit einer anderen Länge zurückgegeben werden würde.quelle
Da Character eine von Object abgeleitete Klasse ist, können Sie null als "Instanz" zuweisen:
Problem gelöst ;)
quelle
Ein leerer String ist ein Wrapper auf einem
char[]
ohne Elemente. Sie können eine leere habenchar[]
. Aber Sie können kein "leer" habenchar
. Wie andere Primitive muss achar
einen Wert haben.Sie sagen, Sie möchten "einen Charakter ersetzen, ohne ein Leerzeichen zu lassen".
Wenn Sie es mit a zu tun haben
char[]
, würden Sie ein neues erstellen,char[]
wobei dieses Element entfernt wird.Wenn Sie es mit einem zu tun haben
String
, würden Sie einen neuenString
(String ist unveränderlich) erstellen, bei dem das Zeichen entfernt wird.Hier sind einige Beispiele, wie Sie ein Zeichen entfernen können:
quelle
Da
chars
dies als Ganzzahlen (ASCII-Codes) dargestellt werden kann, können Sie einfach schreiben:Die 0 im ASCII-Code ist
null
.quelle
char
) ist die vollständige UTF-16-Codierung für den Unicode-Codepunkt U + 0000. Eine Ähnlichkeit mit einem anderen Zeichensatz oder einer anderen Zeichenkodierung ist irrelevant. UTF-16 wird von Java verwendet.Wenn Sie ein Zeichen in einem String ersetzen möchten, ohne Leerzeichen zu lassen, können Sie dies mit StringBuilder erreichen. String ist ein unveränderliches Objekt in Java, Sie können es nicht ändern.
quelle
Das kannst du nicht. "" ist das Literal für eine Zeichenfolge, die keine Zeichen enthält . Es enthält nicht das "leere Zeichen" (was auch immer Sie damit meinen).
quelle
Ich habe danach gesucht. Einfach einstellen
char c = 0;
und es funktioniert perfekt. Versuch es.Wenn Sie beispielsweise versuchen, doppelte Zeichen aus einem String zu entfernen, besteht eine Möglichkeit darin, den String in ein char-Array zu konvertieren und in einem Hashset von Zeichen zu speichern, wodurch Duplikate automatisch verhindert werden.
Eine andere Möglichkeit besteht jedoch darin, die Zeichenfolge in ein Zeichen-Array zu konvertieren, zwei for-Schleifen zu verwenden und jedes Zeichen mit dem Rest des Zeichenfolgen- / Zeichen-Arrays zu vergleichen (ein Big O bei N ^ 2-Aktivität) und dann für jedes gefundene Duplikat Setzen Sie das Zeichen einfach auf 0 ..
... und verwenden Sie
new String(char[])
, um das resultierende char-Array in einen String zu konvertieren und dann sysout zum Drucken (dies ist übrigens alles Java). Sie werden feststellen, dass alle auf Null gesetzten Zeichen einfach nicht vorhanden sind und alle Duplikate verschwunden sind. langer Beitrag, wollte Ihnen aber nur ein Beispiel geben.Also ja setzen
char c = 0;
oder wenn für char Array,cArray[i]=0
für dieses bestimmte doppelte Zeichen setzen und Sie werden es entfernt haben.quelle
In Java gibt es nichts als leeres Zeichenliteral , mit anderen Worten, '' hat keine Bedeutung im Gegensatz zu "", was ein leeres String-Literal bedeutet
Das nächste, was Sie tun können, um ein leeres Zeichenliteral darzustellen, ist char [] mit der Länge Null, so etwas wie:
Wenn Sie auf die String-Klasse verweisen, erstellt der Standardkonstruktor mithilfe von eine leere Zeichenfolge
new char[0]
Außerdem ist die Verwendung von Character.MIN_VALUE nicht korrekt, da es sich nicht um ein wirklich leeres Zeichen handelt, sondern um den kleinsten Wert des Typzeichens.
Ich mag es auch nicht
Character c = null;
als Lösung, hauptsächlich weil jvm NPE auslöst, wenn es versucht, es zu entpacken. Zweitens ist null im Grunde eine Referenz auf nichts für den Referenztyp, und hier handelt es sich um einen primitiven Typ, der null nicht als möglichen Wert akzeptiert.Angenommen, in der Zeichenfolge, z. B. str, möchte OP alle Vorkommen eines Zeichens, z. B. 'x', durch ein leeres Zeichen '' ersetzen. Versuchen Sie dann Folgendes:
quelle
So mache ich es.
quelle
Der obige Code initialisiert die Variable
ch
mit dem Mindestwert, den ein Zeichen haben kann (dh\u0000
).quelle
Sie können so etwas tun:
quelle
Sie können nur ein vorhandenes Zeichen wiederverwenden. zB
\0
Wenn Sie diese in einem String setzen, erhalten Sie einen String mit einem Zeichen in ihm.Angenommen, Sie möchten eine
char
solche, wenn Sie dies tunWas Sie stattdessen tun müssen, ist
quelle
it not worked
? Meinst du, es wird nicht kompiliert? In diesem Fall wäre eschar ch = '\0';
oderchar ch = 0;
nul
Zeichen ist eines der vielen Sonderzeichen, die darauf hinweisen, dass es sich um ein Zeichen handelt, das nicht wirklich vorhanden ist, aber selbst immer noch ein Zeichen ist.Verwenden Sie den
\b
Operator (den Backspace-Escape-Operator) im zweiten Parameterquelle
Hey, ich mache immer Methoden für benutzerdefinierte Sachen, die normalerweise nicht in Java implementiert sind. Hier ist eine einfache Methode, die ich zum Entfernen von Zeichen aus String Fast gemacht habe
Zur Erläuterung: Ja, es gibt kein Nullzeichen zum Ersetzen, aber Sie können ein solches Zeichen entfernen. Ich weiß, dass es eine alte Frage ist, aber ich poste diese Antwort, weil dieser Code für einige Personen hilfreich sein kann.
quelle