Uklonite emojije iz Java niza

1. Pregled

Emojiji su danas sve popularniji u razmjeni tekstnih poruka - ponekad moramo očistiti tekst od njih i drugih simbola.

U ovom uputstvu razgovarat ćemo o različitim načinima uklanjanja emojija iz a Niz na Javi.

2. Korištenje Emoji knjižnice

Prvo ćemo upotrijebiti knjižnicu emojija da uklonimo emoji s naše Niz.

Koristit ćemo emoji-java u sljedećem primjeru, tako da moramo ovisiti o našoj pom.xml:

 com.vdurmont emoji-java 4.0.0 

Najnoviju verziju možete pronaći ovdje.

Sada da vidimo kako koristiti emoji-java za uklanjanje emojija s našeg Niz:

@Test public void whenRemoveEmojiUsingLibrary_thenSuccess () {Tekst niza = "la conférence, commencera à 10 heures?"; Rezultat niza = EmojiParser.removeAllEmojis (tekst); assertEquals (rezultat, "konferencija, početak od 10 sati"); }

Evo nas pozivajući removeAllEmojis () metoda EmojiParser.

Možemo i koristiti EmojiParser za zamjenu emojija s njegovim aliasima pomoću parseToAliases () metoda:

@Test public void whenReplaceEmojiUsingLibrary_thenSuccess () {Tekst niza = "la conférence, commencera à 10 heures?"; Rezultat niza = EmojiParser.parseToAliases (tekst); assertEquals (rezultat, "konferencija, početak od 10 sati: sweat_smile:"); }

Imajte na umu da je upotreba ove knjižnice vrlo korisna ako emojije treba zamijeniti njihovim pseudonimima.

Međutim, knjižnica emoji-java otkrivat će samo emojije, ali neće moći otkriti simbole ili druge posebne znakove.

3. Korištenje redovitog izraza

Dalje, regularnim izrazom možemo ukloniti emojije i druge simbole.

Dopustit ćemo samo određene vrste znakova:

@Test public void whenRemoveEmojiUsingMatcher_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Redni izraz niza = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; Uzorak uzorka = obrazac.compile (regularni izraz, obrazac.UNICODE_CHARACTER_CLASS); Podudaranje podudaranja = pattern.matcher (tekst); Rezultat niza = matcher.replaceAll (""); assertEquals (rezultat, "konferencija, početak od 10 sati"); }

Razdvojimo naš regularni izraz:

  • \ p {L} - dopustiti sva slova s ​​bilo kojeg jezika
  • \ p {N} - za brojeve
  • \ p {P} - za interpunkciju
  • \ p {Z} - za separatore razmaka
  • ^ je za negaciju, pa će svi ovi izrazi biti na bijeloj listi

Ovaj će izraz zadržati samo slova, brojeve, interpunkciju i razmake. Izraz možemo prilagoditi kako želimo dopustiti ili ukloniti više vrsta znakova

Možemo i koristiti String.replaceAll () s istim regularnim izrazom:

@Test public void whenRemoveEmojiUsingRegex_thenSuccess () {Tekst niza = "konferencija, početak od 10 sati?"; Redni izraz niza = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; Rezultat niza = text.replaceAll (regularni izraz, ""); assertEquals (rezultat, "konferencija, početak od 10 sati"); }

5. Korištenje kodnih točaka

Sad ćemo također otkriti emojije koristeći njihove kodne točke. Možemo koristiti \ x {heksidcimalna vrijednost} izraz koji odgovara određenoj Unicode točki.

U sljedećem primjeru uklanjamo dva Unicode raspona emojija koristeći njihove Unicode točke:

@Test public void whenRemoveEmojiUsingCodepoints_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Rezultat niza = text.replaceAll ("[\ x {0001f300} - \ x {0001f64f}] | [\ x {0001f680} - \ x {0001f6ff}]", ""); assertEquals (rezultat, "konferencija, početak od 10 sati"); }

Cjelovit popis trenutno dostupnih emojija i njihove kodne točke možete pronaći ovdje.

6. Korištenje raspona Unicode

Na kraju ćemo ponovno upotrijebiti Unicode, ali pomoću \ u ovaj put izraz.

Problem je što se neke Unicode točke ne uklapaju u jedan 16-bitni Java znak, pa nekima od njih trebaju dva znaka.

Evo odgovarajućeg izraza pomoću \ u:

@Test public void whenRemoveEmojiUsingUnicode_thenSuccess () Tekst niza = "la conférence, commencera à 10 heures?"; Rezultat niza = text.replaceAll ("[\ ud83c \ udf00- \ ud83d \ ude4f]

7. Zaključak

U ovom kratkom članku naučili smo različite načine uklanjanja emojija iz Java niza. Koristili smo knjižnicu emojija, regularne izraze i raspone Unicodea.

Cjeloviti izvorni kod za primjere možete pronaći na GitHubu.


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