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.