Leestekens uit een tekenreeks in Java verwijderen

Tijdens tekstverwerking, of je nu zoekt naar bepaalde woorden en regels maakt voor het matchen van patronen, het tellen van de frequentie van elementen, enz. - interpunctie kan je plannen in de war sturen.

Vaak wil je stopwoorden, interpunctie, cijfers of iets anders verwijderen sommige categorie van karakters, afhankelijk van wat je einddoel is.

In deze korte zelfstudie bekijken we hoe u interpunctie uit een tekenreeks in Java kunt verwijderen.

Verwijder interpunctie uit string met RegEx (reguliere expressies)

Reguliere expressies passen hier heel natuurlijk, zowel omdat ze waarschijnlijk deel gaan uitmaken van andere verwerkingsonderdelen, als omdat het efficiรซnte patroonvergelijkers zijn! In Java is de reguliere expressie voor het matchen van interpunctie p{Punct} of een steno p{P}.

Je moet de eerste backslash in een tekenreeks escapen, dus het verwijderen van alle interpunctie komt overeen met het matchen en vervangen door een leeg teken:

String.replaceAll("p{P}", "")

Laten we het toepassen op een eenvoudige zin:

String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Dit resulteert in:

Hi This is in effect a synthetic sentence Its meant to have several punctuation characters

Laten we eens kijken welke tekens hier als interpunctie worden behandeld:

String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Met deze speciale tekens - die overblijven na het verwijderen van interpunctie?

$+^`|~

Verwijder interpunctie uit string zonder RegEx

Als u geen reguliere expressies wilt gebruiken, kunt u een handmatige controle uitvoeren terwijl u door elk teken van een tekenreeks loopt. Vergeet niet om een โ€‹โ€‹te gebruiken StringBuffer in plaats van een String terwijl u dit doet, aangezien strings onveranderlijk zijn en er kopieรซn moeten worden gemaakt telkens wanneer u een teken wilt toevoegen - dus u zou string.length aantal strings in het geheugen.

StringBuffer is veranderlijk en kan aan het einde van het proces eenvoudig worden omgezet in een onveranderlijke string:

Bekijk onze praktische, praktische gids voor het leren van Git, met best-practices, door de industrie geaccepteerde normen en bijgevoegd spiekbriefje. Stop met Googlen op Git-commando's en eigenlijk leren het!

public static String removePunctuations(String s) {
    StringBuffer buffer = new StringBuffer();
    for (Character c : s.toCharArray()) {
        if(Character.isLetterOrDigit(c))
            buffer.append(c);
    }
    return buffer.toString();
}

Laten we een string maken en deze opschonen:

String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello! 
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ 
Where are they? :(

HelloHerearesomespecialcharactersWherearethey

Hoewel dit proces meer aanpasbaar is, controleert het alleen op letters en cijfers. U kunt ook handmatig controleren op tekencodes en in plaats daarvan alleen enkele leestekens uitsluiten - en spaties, regeleinden, enz. achterlaten.

Conclusie

In deze korte tutorial hebben we bekeken hoe je interpunctie of bepaalde speciale tekens uit een tekenreeks in Java kunt verwijderen, met behulp van reguliere expressies of een handmatige controle in een verbeterde for lus.

Tijdstempel:

Meer van Stapelmisbruik