Távolítsa el a hangulatjeleket a Java karakterláncokból
1. Áttekintés
A hangulatjelek manapság egyre népszerűbbek a szöveges üzenetküldésben - néha meg kell tisztítanunk a szövegünket tőlük és más szimbólumoktól.
Ebben az oktatóanyagban megvitatjuk a hangulatjelek eltávolításának különböző módjait a Húr Java-ban.
2. Az Emoji Library használata
Először egy hangulatjel-könyvtárat használunk az emojik eltávolításához a könyvtárból Húr.
Majd használjuk emoji-java a következő példában, tehát szükségünk van erre a függőségre pom.xml:
com.vdurmont emoji-java 4.0.0
A legújabb verzió itt található.
Most nézzük meg, hogyan kell használni emoji-java hogy eltávolítsuk a hangulatjeleket a mi oldalunkról Húr:
@Test public void whenRemoveEmojiUsingLibrary_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Karakterlánc eredménye = EmojiParser.removeAllEmojis (szöveg); assertEquals (eredmény: "la conférence, commencera à 10 heures"); }
Itt vagyunk hívja a removeAllEmojis () a metódusa EmojiParser.
Használhatjuk is EmojiParser hogy az emojit álneveivel lecserélje a parseToAliases () módszer:
@Test public void whenReplaceEmojiUsingLibrary_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Karakterlánc eredménye = EmojiParser.parseToAliases (szöveg); assertEquals (eredmény: "la conférence, commencera à 10 heures: verejték_mosoly:"); }
Ne feledje, hogy ennek a könyvtárnak a használata nagyon hasznos, ha le kell cserélnünk az emojikat az álneveikkel.
Az emoji-java könyvtár azonban csak a hangulatjeleket fogja felismerni, de nem képes felismerni a szimbólumokat vagy más speciális karaktereket.
3. Reguláris kifejezés használata
Ezután használhatunk reguláris kifejezést az emojik és más szimbólumok eltávolítására.
Csak meghatározott típusú karaktereket engedélyezünk:
@Test public void whenRemoveEmojiUsingMatcher_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; String regex = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; Mintaminta = Pattern.compile (regex, Pattern.UNICODE_CHARACTER_CLASS); Matcher matcher = minta.matcher (szöveg); Karakterlánc eredménye = matcher.replaceAll (""); assertEquals (eredmény: "la conférence, commencera à 10 heures"); }
Bontjuk le a reguláris kifejezésünket:
- \ p {L} - az összes levél engedélyezése bármilyen nyelvről
- \ p {N} - számokhoz
- \ p {P} - írásjelekre
- \ p {Z} - a szóközök elválasztóinak
- ^ tagadásra szolgál, ezért ezek a kifejezések engedélyezőlistára kerülnek
Ez a kifejezés csak betűket, számokat, írásjeleket és szóközt tartalmaz. Testreszabhatjuk a kifejezést, ha további karaktertípusokat akarunk engedélyezni vagy eltávolítani
Használhatjuk is String.replaceAll () azonos regexszel:
@Test public void whenRemoveEmojiUsingRegex_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; String regex = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; Karakterlánc eredménye = text.replaceAll (regex, ""); assertEquals (eredmény: "la conférence, commencera à 10 heures"); }
5. Kódpontok használata
Most az emojikat is felismerjük a kódpontjaikkal. Tudjuk használni \ x {hexidecimális érték} kifejezés egy adott Unicode ponthoz illeszkedik.
A következő példában két Unicode emojistartományt távolítunk el Unicode pontjaikkal:
@Test public void whenRemoveEmojiUsingCodepoints_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; Karakterlánc eredménye = text.replaceAll ("[\ x {0001f300} - \ x {0001f64f}] | [\ x {0001f680} - \ x {0001f6ff}]", ""; assertEquals (eredmény: "la conférence, commencera à 10 heures"); }
A jelenleg elérhető hangulatjelek és azok kódpontjainak teljes listája itt található.
6. Az Unicode Range használata
Végül ismét használjuk az Unicode-ot, de a \ u kifejezés ezúttal.
A probléma az, hogy egyes Unicode-pontok nem férnek el egy 16 bites Java karakterben, ezért néhányuknak két karakterre van szüksége.
Itt található a megfelelő kifejezés a \ u:
@Test public void whenRemoveEmojiUsingUnicode_thenSuccess () String text = "la conférence, commencera à 10 heures?"; Karakterlánc eredménye = text.replaceAll ("[\ ud83c \ udf00- \ ud83d \ ude4f]
7. Következtetés
Ebben a rövid cikkben különféle módszereket tanultunk meg az emojik eltávolítására a Java karakterláncokból. Emoji könyvtárat, reguláris kifejezéseket és Unicode tartományokat használtunk.
A példák teljes forráskódja megtalálható a GitHub oldalon.