Fjern emojis fra en Java-streng

1. Oversigt

Emojis bliver mere populære i tekstbeskeder i disse dage - nogle gange er vi nødt til at rense vores tekst fra dem og andre symboler.

I denne vejledning diskuterer vi forskellige måder at fjerne emojis fra a Snor i Java.

2. Brug af Emoji Library

Først bruger vi et emoji-bibliotek til at fjerne emojierne fra vores Snor.

Vi bruger emoji-java i det følgende eksempel, så vi har brug for denne afhængighed af vores pom.xml:

 com.vdurmont emoji-java 4.0.0 

Den seneste version kan findes her.

Lad os nu se, hvordan du bruger emoji-java for at fjerne emojier fra vores Snor:

@Test offentligt ugyldigt nårRemoveEmojiUsingLibrary_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Strengresultat = EmojiParser.removeAllEmojis (tekst); assertEquals (resultat, "la conférence, commencera à 10 heures"); }

Her er vi ringer til removeAllEmojis () metode til EmojiParser.

Vi kan også bruge EmojiParser at erstatte emoji med dets aliasser ved hjælp af parseToAliases () metode:

@Test offentligt ugyldigt nårReplaceEmojiUsingLibrary_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Strengresultat = EmojiParser.parseToAliases (tekst); assertEquals (resultat, "la conférence, commencera à 10 heures: sweat_smile:"); }

Bemærk, at brug af dette bibliotek er meget nyttigt, hvis vi har brug for at erstatte emoji med deres aliasser.

Emoji-java-biblioteket registrerer dog kun emojier, men kan ikke registrere symboler eller andre specialtegn.

3. Brug af et regulært udtryk

Dernæst kan vi bruge et regulært udtryk til at fjerne emojis og andre symboler.

Vi tillader kun specifikke typer tegn:

@Test offentligt ugyldigt nårRemoveEmojiUsingMatcher_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Streng regex = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; Mønster mønster = Mønster.kompil (regex, Mønster.UNICODE_CHARACTER_CLASS); Matcher matcher = mønster. Matcher (tekst); Strengresultat = matcher.replaceAll (""); assertEquals (resultat, "la conférence, commencera à 10 heures"); }

Lad os nedbryde vores regulære udtryk:

  • \ p {L} - at tillade alle bogstaver fra ethvert sprog
  • \ p {N} - for tal
  • \ p {P} - til tegnsætning
  • \ p {Z} - til separatorer til mellemrum
  • ^ er til negation, så alle disse udtryk bliver hvidlistet

Dette udtryk beholder kun bogstaver, tal, tegnsætning og mellemrum. Vi kan tilpasse udtrykket, da vi vil tillade eller fjerne flere karaktertyper

Vi kan også bruge String.replaceAll () med samme regex:

@Test offentligt ugyldigt nårRemoveEmojiUsingRegex_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Streng regex = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; Strengresultat = text.replaceAll (regex, ""); assertEquals (resultat, "la conférence, commencera à 10 heures"); }

5. Brug af kodepunkter

Nu registrerer vi også emojier ved hjælp af deres kodepunkter. Vi kan bruge \ x {hexadecimal værdi} udtryk for at matche et specifikt Unicode-punkt.

I det følgende eksempel fjerner vi to Unicode-intervaller af emojier ved hjælp af deres Unicode-punkter:

@Test offentligt ugyldigt nårRemoveEmojiUsingCodepoints_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; String result = text.replaceAll ("[\ x {0001f300} - \ x {0001f64f}] | [\ x {0001f680} - \ x {0001f6ff}]", ""); assertEquals (resultat, "la conférence, commencera à 10 heures"); }

Den fulde liste over aktuelt tilgængelige emojier og deres kodepunkter kan findes her.

6. Brug af Unicode Range

Endelig bruger vi Unicode igen, men bruger \ u udtryk denne gang.

Problemet er, at nogle Unicode-punkter ikke passer i et 16-bit Java-tegn, så nogle af dem har brug for to tegn.

Her er det tilsvarende udtryk ved hjælp af \ u:

@Test offentligt ugyldigt nårRemoveEmojiUsingUnicode_thenSuccess () String text = "la conférence, commencera à 10 heures?"; Strengresultat = text.replaceAll ("[\ ud83c \ udf00- \ ud83d \ ude4f]

7. Konklusion

I denne hurtige artikel lærte vi forskellige måder at fjerne emojier fra en Java-streng. Vi brugte emoji-bibliotek, regulære udtryk og Unicode-intervaller.

Den fulde kildekode til eksemplerne kan findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found