הסר את האימוג'ים ממחרוזת Java

1. סקירה כללית

אימוג'ים הופכים פופולריים יותר בהעברת הודעות טקסט בימינו - לפעמים אנחנו צריכים לנקות את הטקסט שלנו מהם וסמלים אחרים.

במדריך זה נדון בדרכים שונות להסרת אימוג'י מ- a חוּט בג'אווה.

2. שימוש בספריית האימוג'י

ראשית, נשתמש בספריית אמוג'י כדי להסיר את האימוג'ים מה- חוּט.

נשתמש אימוג'י ג'אווה בדוגמה הבאה, אז אנחנו צריכים תלות זו שלנו pom.xml:

 com.vdurmont emoji-java 4.0.0 

הגרסה האחרונה תוכל למצוא כאן.

עכשיו בואו נראה כיצד להשתמש אימוג'י ג'אווה כדי להסיר אימוג'ים מה- חוּט:

@ מבחן ציבורי בטל כאשר RemoEmojiUsingLibrary_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; תוצאת מחרוזת = EmojiParser.removeAllEmojis (טקסט); assertEquals (תוצאה, "la conférence, commencera à 10 heures"); }

כאן היו קורא ל removeAllEmojis () שיטה של EmojiParser.

אנחנו יכולים גם להשתמש EmojiParser כדי להחליף את האימוג'י בכינויים באמצעות parseToAliases () שיטה:

@ מבחן ציבורי בטל כאשר החלף אמוג'י שימוש בספרייה_את-הצלחה () {String text = "la conférence, commencera à 10 heures?"; תוצאת מחרוזת = EmojiParser.parseToAliases (טקסט); assertEquals (תוצאה, "la conférence, commencera à 10 heures: sweat_smile:"); }

שים לב ששימוש בספרייה זו שימושי מאוד אם עלינו להחליף אמוג'י בכינויים שלהם.

עם זאת, ספריית האימוג'י ג'אווה תזהה רק אמוג'ים, אך לא תוכל לזהות סמלים או תווים מיוחדים אחרים.

3. שימוש בביטוי רגולרי

לאחר מכן נוכל להשתמש בביטוי רגולרי להסרת אימוג'ים וסמלים אחרים.

אנו נאפשר רק סוגים ספציפיים של תווים:

@ מבחן ציבורי בטל כאשר RemoEmojiUsingMatcher_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; מחרוזת regex = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; תבנית תבנית = תבנית. קומפילציה (regex, תבנית. UNICODE_CHARACTER_CLASS); התאמת התאמה = דפוס. התאמה (טקסט); תוצאת מחרוזת = matcher.replaceAll (""); assertEquals (תוצאה, "la conférence, commencera à 10 heures"); }

בואו נשבור את הביטוי הקבוע שלנו:

  • \ p {L} - לאפשר את כל האותיות מכל שפה
  • \P n} - למספרים
  • \עמ} - לפיסוק
  • \ p {Z} - למפרידי חלל לבן
  • ^ מיועד לשלילה, ולכן כל הביטויים הללו יופיעו ברשימת ההיתרים

ביטוי זה ישמור רק על אותיות, מספרים, פיסוק ומרחב לבן. אנו יכולים להתאים אישית את הביטוי כפי שאנו רוצים לאפשר או להסיר סוגי תווים נוספים

אנחנו יכולים גם להשתמש String.replaceAll () עם אותו regex:

@ מבחן פומבי בטל כאשר RemoEmojiUsingRegex_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; מחרוזת regex = "[^ \ p {L} \ p {N} \ p {P} \ p {Z}]"; תוצאת מחרוזת = text.replaceAll (regex, ""); assertEquals (תוצאה, "la conférence, commencera à 10 heures"); }

5. שימוש בנקודות קוד

כעת נזהה גם אימוג'ים המשתמשים בנקודות הקוד שלהם. אנחנו יכולים להשתמש \ x {ערך hexidecimal} ביטוי כדי להתאים לנקודת Unicode ספציפית.

בדוגמה הבאה, אנו מסירים שני טווחי Unicode של אמוג'י באמצעות נקודות Unicode שלהם:

@ מבחן פומבי בטל כאשר RemoEmojiUsingCodepoints_thenSuccess () {String text = "la conférence, commencera à 10 heures?"; תוצאת מחרוזת = text.replaceAll ("[\ x {0001f300} - \ x {0001f64f}] | [\ \ x {0001f680} - \ x {0001f6ff}]", ""); assertEquals (תוצאה, "la conférence, commencera à 10 heures"); }

את הרשימה המלאה של האימוג'ים הזמינים ונקודות הקוד שלהם תוכלו למצוא כאן.

6. שימוש בטווח Unicode

לבסוף, נשתמש ב- Unicode שוב אך באמצעות ה- \ u ביטוי הפעם.

הבעיה היא שחלק מנקודות Unicode אינן מתאימות לתו ג'אווה אחד של 16 ביט, לכן חלקן זקוקות לשני תווים.

הנה הביטוי המתאים באמצעות \ u:

@ מבחן ציבורי בטל כאשר RemoEmojiUsingUnicode_thenSuccess () טקסט מחרוזת = "la conférence, commencera à 10 heures?"; תוצאת מחרוזת = text.replaceAll ("[\ ud83c \ udf00- \ ud83d \ ude4f]

7. מסקנה

במאמר מהיר זה למדנו דרכים שונות להסיר אימוג'י ממחרוזת ג'אווה. השתמשנו בספריית אמוג'י, ביטויים רגילים וטווחי Unicode.

קוד המקור המלא של הדוגמאות ניתן למצוא באתר GitHub.


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