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.