Fjern emojis fra en Java-streng

1. Oversikt

Emojis blir stadig mer populære i tekstmeldinger i disse dager - noen ganger trenger vi å rense teksten fra dem og andre symboler.

I denne opplæringen vil vi diskutere forskjellige måter å fjerne emojis fra a String i Java.

2. Bruke Emoji Library

Først bruker vi et emoji-bibliotek for å fjerne emojiene fra vårt String.

Vi bruker emoji-java i det følgende eksemplet, så vi trenger denne avhengigheten av vår pom.xml:

 com.vdurmont emoji-java 4.0.0 

Den siste versjonen finner du her.

La oss nå se hvordan du bruker emoji-java for å fjerne emoji fra vår String:

@Test offentlig ugyldig 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 removeAllEmojis () Metode av EmojiParser.

Vi kan også bruke EmojiParser for å erstatte emoji med aliasene ved hjelp av parseToAliases () metode:

@Test offentlig ugyldig 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:"); }

Merk at bruk av dette biblioteket er veldig nyttig hvis vi trenger å erstatte emoji med aliasene deres.

Emoji-java-biblioteket vil imidlertid bare oppdage emojier, men vil ikke kunne oppdage symboler eller andre spesialtegn.

3. Bruke et vanlig uttrykk

Deretter kan vi bruke et vanlig uttrykk for å fjerne emojier og andre symboler.

Vi tillater bare spesifikke typer tegn:

@Test offentlig ugyldig 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.kompilere (regex, Mønster.UNICODE_CHARACTER_CLASS); Matcher matcher = mønster. Matcher (tekst); Strengresultat = matcher.replaceAll (""); assertEquals (resultat, "la conférence, commencera à 10 heures"); }

La oss bryte ned vårt vanlige uttrykk:

  • \ p {L} - å tillate alle bokstaver fra hvilket som helst språk
  • \ p {N} - for tall
  • \ p {P} - for tegnsetting
  • \ p {Z} - for skilleark for mellomrom
  • ^ er for negasjon, så alle disse uttrykkene vil bli godkjent

Dette uttrykket vil bare beholde bokstaver, tall, tegnsetting og mellomrom. Vi kan tilpasse uttrykket slik vi vil tillate eller fjerne flere karaktertyper

Vi kan også bruke String.replaceAll () med samme regeks:

@Test offentlig ugyldig 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. Bruke kodepunkter

Nå vil vi også oppdage emojier ved hjelp av kodepunktene deres. Vi kan bruke \ x {heksadesimal verdi} uttrykk for å matche et bestemt Unicode-punkt.

I det følgende eksemplet fjerner vi to Unicode-områder med emojier ved hjelp av Unicode-punktene:

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

Den komplette listen over tilgjengelige emojier og deres kodepunkter finner du her.

6. Bruke Unicode Range

Til slutt bruker vi Unicode igjen, men bruker \ u uttrykk denne gangen.

Problemet er at noen Unicode-punkter ikke passer i ett 16-biters Java-tegn, så noen av dem trenger to tegn.

Her er det tilsvarende uttrykket ved hjelp av \ u:

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

7. Konklusjon

I denne raske artikkelen lærte vi forskjellige måter å fjerne emojier fra en Java-streng. Vi brukte emoji-bibliotek, vanlige uttrykk og Unicode-områder.

Den fullstendige kildekoden for eksemplene finner du på GitHub.


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