Fjern tegnsetting fra en streng i Java

Under tekstbehandling, enten du søker etter bestemte ord og lager mønstersamsvarsregler, teller frekvensen av elementer osv. – kan tegnsetting sette en skiftenøkkel i planene dine.

Ofte vil du fjerne stoppord, tegnsetting, sifre eller annet noen kategori av karakterer, avhengig av hva sluttmålet ditt er.

I denne korte opplæringen tar vi en titt på hvordan du fjerner tegnsetting fra en streng i Java.

Fjern tegnsetting fra streng med RegEx (regulære uttrykk)

Regular Expressions passer veldig naturlig her, både fordi de sannsynligvis kommer til å være en del av andre prosesseringsdeler, og fordi de er effektive mønstermatchere! I Java er det regulære uttrykket for matchende tegnsetting p{Punct} eller en stenografi p{P}.

Du må unnslippe den første skråstreken i en streng, så å fjerne alle tegnsettinger tilsvarer å matche dem og erstatte med et tomt tegn:

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

La oss bruke det på en enkel setning:

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);

Dette resulterer i:

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

La oss ta en titt på hvilke tegn som behandles som tegnsetting her:

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

Med disse spesialtegnene – hvilke er igjen etter fjerning av tegnsetting?

$+^`|~

Fjern tegnsetting fra streng uten RegEx

Hvis du ikke vil bruke regulære uttrykk, kan du gjøre en manuell sjekk mens du itererer gjennom hvert tegn i en streng. Husk å bruke a StringBuffer i stedet for a String mens du gjør dette, siden strenger er uforanderlige og kopier må lages hver gang du vil legge til en karakter – så du lager string.length antall strenger i minnet.

StringBuffer er mutbar, og kan enkelt konverteres til en uforanderlig streng på slutten av prosessen:

Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!

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();
}

La oss lage en streng og rense den:

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

Selv om denne prosessen er mer tilpassbar, ser den bare etter bokstaver og sifre. Du kan alternativt sjekke manuelt for tegnkoder, og bare ekskludere noen skilletegn i stedet – og la det være mellomrom, linjeskift osv.

konklusjonen

I denne korte opplæringen tok vi en titt på hvordan du kan fjerne tegnsetting eller visse spesialtegn fra en streng i Java, ved å bruke regulære uttrykk eller en manuell innsjekk i en forbedret for sløyfe.

Tidstempel:

Mer fra Stackabuse