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.