Hoe een lege char in de Java Character-klasse weer te geven

Ik wil een leeg teken in Java weergeven als ""in String…

Zoals dat char ch = an empty character;

Eigenlijk wil ik een teken vervangen zonder ruimte over te laten.

Ik denk dat het voldoende is om te begrijpen wat dit betekent: geen teken, zelfs geen spatie.


Antwoord 1, autoriteit 100%

U kunt '\u0000'(of 0) toewijzen.
Gebruik hiervoor Character.MIN_VALUE.

Character ch = Character.MIN_VALUE;

Antwoord 2, autoriteit 75%

charbetekent precies één teken. U kunt geen nul tekens aan dit type toewijzen.

Dat betekent dat er geen char-waarde is waarvoor String.replace(char, char)een string met een andere lengte zou retourneren.


Antwoord 3, autoriteit 28%

Aangezien Character een klasse is die is afgeleid van Object, kun je null toewijzen als “instantie”:

Character myChar = null;

Probleem opgelost 😉


Antwoord 4, autoriteit 10%

Een lege String is een wrapper op een char[]zonder elementen. U kunt een lege char[]hebben. Maar je mag geen “lege” charhebben. Net als andere primitieven moet een chareen waarde hebben.

Je zegt dat je “een personage wilt vervangen zonder een spatie achter te laten”.

Als je te maken hebt met een char[], dan zou je een nieuwe char[]maken met dat element verwijderd.

Als je te maken hebt met een String, dan zou je een nieuwe Stringmaken (String is onveranderlijk) met het teken verwijderd.

Hier zijn enkele voorbeelden van hoe je een char kunt verwijderen:

public static void main(String[] args) throws Exception {
    String s = "abcdefg";
    int index = s.indexOf('d');
    // delete a char from a char[]
    char[] array = s.toCharArray();
    char[] tmp = new char[array.length-1];
    System.arraycopy(array, 0, tmp, 0, index);
    System.arraycopy(array, index+1, tmp, index, tmp.length-index);
    System.err.println(new String(tmp));
    // delete a char from a String using replace
    String s1 = s.replace("d", "");
    System.err.println(s1);
    // delete a char from a String using StringBuilder
    StringBuilder sb = new StringBuilder(s);
    sb.deleteCharAt(index);
    s1 = sb.toString();
    System.err.println(s1);
}

Antwoord 5, autoriteit 6%

Omdat charskunnen worden weergegeven als gehele getallen (ASCII-codes), kunt u eenvoudig het volgende schrijven:

char c = 0;

De 0 in ASCII-code is null.


Antwoord 6, autoriteit 4%

Als u een teken in een String wilt vervangen zonder lege ruimte achter te laten, dan kunt u dit bereiken door StringBuilder te gebruiken. String is een onveranderlijk object in Java, je kunt het niet wijzigen.

String str = "Hello";
StringBuilder sb = new StringBuilder(str);
sb.deleteCharAt(1); // to replace e character

Antwoord 7, autoriteit 2%

Dat kan niet. “” is de letterlijke waarde voor een tekenreeks, die geentekens bevat. Het bevat niet het “lege teken” (wat je daar ook mee bedoelt).


Antwoord 8, autoriteit 2%

Hier was ik naar op zoek. Stel gewoon de char c = 0;in en het werkt perfect. Probeer het.

Als u bijvoorbeeld dubbele tekens uit een String probeert te verwijderen, zou een manier zijn om de tekenreeks te converteren naar een char-array en op te slaan in een hashset van tekens die automatisch dubbele tekens zou voorkomen.

Een andere manier is echter om de string te converteren naar een char-array, twee for-loops te gebruiken en elk teken te vergelijken met de rest van de string/char-array (een grote O op N^2-activiteit), en vervolgens voor elk gevonden duplicaat zet die char op 0..

…en gebruik new String(char[])om de resulterende char array om te zetten in string en dan sysout om af te drukken (dit is allemaal java btw). je zult zien dat alle tekens die op nul zijn ingesteld er gewoon niet zijn en dat alle duplicaten verdwenen zijn. lang bericht, maar wilde je gewoon een voorbeeld geven.

dus ja, stel char c = 0;in of als voor char array, stel cArray[i]=0in voor dat specifieke dubbele teken en je hebt het verwijderd.


Antwoord 9

char ch = Character.MIN_VALUE;

De bovenstaande code initialiseert de variabele chmet de minimumwaarde die een char kan hebben (d.w.z. \u0000).


Antwoord 10

In Java is er niets zo leeg teken letterlijk, met andere woorden, ” heeft geen betekenis in tegenstelling tot “” wat een leeg tekenreeks letterlijk betekent

Het dichtst bij wat u kunt doen om een ​​leeg teken letterlijk weer te geven, is door char [] met een lengte van nul, zoiets als:

char[] cArr = {};         // cArr is a zero length array
char[] cArr = new char[0] // this does the same

Als u verwijst naar de klasse String, maakt de standaardconstructor een lege tekenreeks met behulp van new char[0]

Het gebruik van Character.MIN_VALUE is ook niet correct omdat het niet echt een leeg teken is, maar de kleinste waarde van het type teken.

Ik hou ook niet van Character c = null;als oplossing, vooral omdat jvm NPE zal gooien als het probeert het uit te pakken. Ten tweede is null in feite een verwijzing naar niets met betrekking tot het referentietype en hier hebben we te maken met een primitief type dat null niet als mogelijke waarde accepteert.

Ervan uitgaande dat in de string, zeg str, OP alle voorkomens van een teken, zeg ‘x’, wil vervangen door een leeg teken ”, probeer dan:

str.replace("x", "");

Antwoord 11

zo doe ik het.

char[] myEmptyCharArray = "".toCharArray();

Antwoord 12

Je kunt zoiets als dit doen:

mystring.replace(""+ch, "");

Antwoord 13

Je kunt alleen een bestaand teken hergebruiken. bijv. \0Als je dit in een String plaatst, krijg je een String met één teken erin.


Stel dat je een charwilt, zodat wanneer je dat doet

String s = 
char ch = ?
String s2 = s + ch; // there is not char which does this.
assert s.equals(s2);

wat u in plaats daarvan moet doen is

String s = 
char ch = MY_NULL_CHAR;
String s2 = ch == MY_NULL_CHAR ? s : s + ch;
assert s.equals(s2);

Antwoord 14

Gebruik de operator \b(de backspace-escape-operator) in de tweede parameter

String test= "Anna Banana";
System.out.println(test); //returns Anna Banana<br><br>
System.out.println(test.replaceAll(" ","\b")); //returns AnnaBanana removing all the spaces in the string

Antwoord 15

Hallo, ik maak altijd methoden voor aangepaste dingen die meestal niet in Java zijn geïmplementeerd. Hier is een eenvoudige methode die ik heb gemaakt om tekens uit String Fast te verwijderen

   public static String removeChar(String str, char c){
        StringBuilder strNew=new StringBuilder(str.length());
        char charRead;
        for(int i=0;i<str.length();i++){
            charRead=str.charAt(i);
            if(charRead!=c)
                strNew.append(charRead);
        }
        return strNew.toString();
    }

Ter verduidelijking, ja, er is geen null-teken om te vervangen, maar u kunt het teken op deze manier verwijderen.
Ik weet dat het een oude vraag is, maar ik plaats dit antwoord omdat deze code voor sommige mensen nuttig kan zijn.


Antwoord 16

String before = EMPTY_SPACE+TAB+”word”+TAB+EMPTY_SPACE

Waar
EMPTY_SPACE = ” ” (dit is String)
TAB = ‘\t’ (dit is Karakter)

String after = before.replaceAll(” “, “”).replace(‘\t’, ‘\0’)
middelen
after = “woord”

Other episodes