מבוא לטקסט של Apache Commons

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

במילים פשוטות, ספריית הטקסט של Apache Commons מכילה מספר שיטות שימושיות לשימוש בעבודה מיתרים, מעבר למה שמציעה הליבה של ג'אווה.

במבוא מהיר זה נראה מהו טקסט של Apache Commons ובמה הוא משמש, כמו גם כמה דוגמאות מעשיות לשימוש בספריה.

2. תלות של Maven

נתחיל בהוספה לתלות Maven הבאה שלנו pom.xml:

 org.apache.commons commons-text 1.1 

תוכל למצוא את הגרסה האחרונה של הספרייה במאגר המרכזי של Maven.

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

חבילת השורש org.apache.commons.text מחולק לחבילות משנה שונות:

  • org.apache.commons.text.diff - נבדל בין מיתרים
  • org.apache.commons.text.similarity - דמיון ומרחקים בין מיתרים
  • org.apache.commons.text.translate - תרגום טקסט

בואו נראה למה כל חבילה יכולה לשמש - בפירוט רב יותר.

3. טיפול בטקסט

ה org.apache.commons.text החבילה מכילה כלים מרובים לעבודה מיתרים.

לדוגמה, WordUtils בעל ממשקי API המסוגלים לעשות שימוש באותיות רישיות של כל מילה ב- חוּט, מחליף את המקרה של א חוּט, ובודק אם א חוּט מכיל את כל המילים במערך נתון.

בואו נראה איך נוכל להשתמש באותיות הראשונות של כל מילה באות חוּט:

@ מבחן ציבורי בטל כאשר Capitalized_thenCorrect () {String toBeCapitalized = "להיות באותיות רישיות!"; תוצאת מחרוזת = WordUtils.capitalize (toBeCapitalized); assertEquals ("להיות מהוון!", תוצאה); }

כך נוכל לבדוק אם מחרוזת מכילה את כל המילים במערך:

@ מבחן ציבורי בטל כאשר הוא מכיל AdWords_thenCorrect () {בוליאני מכיל ווערטער = WordUtils .containsAllWords ("מחרוזת לחיפוש", "ל-", "חיפוש"); assertTrue (מכיל AdWords); }

StrSubstitutor מספק דרך נוחה לבנייה מיתרים מתבניות:

@ מבחן ציבורי בטל כאשר Substituted_thenCorrect () {מפה תחליפים = HashMap חדש (); substitutes.put ("שם", "ג'ון"); substitutes.put ("מכללה", "אוניברסיטת סטנפורד"); String templateString = "שמי $ {name} ואני סטודנט ב- $ {college}."; StrSubstitutor sub = StrSubstitutor חדש (תחליפים); תוצאת מחרוזת = sub.replace (templateString); assertEquals ("שמי ג'ון ואני סטודנט באוניברסיטת סטנפורד.", תוצאה); }

StrBuilder מהווה אלטרנטיבה ל Java.lang.StringBuilder. הוא מספק כמה תכונות חדשות שאינן מסופקות על ידי StringBuilder.

לדוגמא, אנו יכולים להחליף את כל המופעים של a חוּט באחר חוּט או לנקות א חוּט מבלי להקצות אובייקט חדש להתייחסותו.

הנה דוגמה מהירה להחלפת חלק מ- a חוּט:

@Test ציבורי בטל כאשרReplaced_thenCorrect () {StrBuilder strBuilder = StrBuilder חדש ("דוגמה StrBuilder!"); strBuilder.replaceAll ("דוגמה", "חדש"); assertEquals (StrBuilder חדש ("StrBuilder חדש!"), strBuilder); }

כדי לנקות א חוּט, אנחנו יכולים פשוט לעשות זאת על ידי התקשרות ל ברור() שיטה על הבנאי:

strBuilder.clear ();

4. חישוב ההבדל בין מיתרים

החבילה org.apache.commons.text.diff מיישם אלגוריתם Myers לחישוב נבדל בין שניים מיתרים.

ההבדל בין שניים מיתרים מוגדר על ידי רצף של שינויים שיכולים להמיר אחד כזה חוּט לאחר.

ישנם שלושה סוגים של פקודות שניתן להשתמש בהן להמרת a חוּט לאחר - InsertCommand, KeepCommand, ו מחק פקודה.

An EditScript האובייקט מחזיק את הסקריפט שצריך להריץ כדי להמיר a חוּט לאחר. בואו נחשב את מספר השינויים החד-צ'אריים שיש לבצע על מנת להמיר a חוּט לאחר:

@ מבחן פומבי בטל כאשר EditScript_thenCorrect () {StringsComparator cmp = StringsComparator חדש ("ABCFGH", "BCDEFG"); תסריט EditScript = cmp.getScript (); int mod = script.getModifications (); assertEquals (4, mod); }

5. דמיון ומרחקים בין מיתרים

ה org.apache.commons.text.similarity החבילה מכילה אלגוריתמים שימושיים למציאת קווי דמיון ומרחקים בין מיתרים.

לדוגמה, הארוך ביותר נפוץ תוצאה ניתן להשתמש כדי למצוא את מספר התווים הנפוצים בשניים מיתרים:

@Test ציבורי בטל כאשרCompare_thenCorrect () {LongestCommonSubsequence lcs = new LongestCommonSubsequence (); int countLcs = lcs.apply ("ניו יורק", "ניו המפשייר"); assertEquals (5, countLcs); }

בדומה לכך, הארוך ביותר נפוץ תוצאה מרחק ניתן להשתמש כדי למצוא את מספר התווים השונים בשניים מיתרים:

@ מבחן ציבורי בטל כאשרCalculateDistance_thenCorrect () {LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance (); int countLcsd = lcsd.apply ("ניו יורק", "ניו המפשייר"); assertEquals (11, countLcsd); }

6. תרגום טקסט

ה org.apache.text.translate החבילה נוצרה בתחילה כדי לאפשר לנו להתאים אישית את הכללים המסופקים על ידי StringEscapeUtils.

החבילה כוללת קבוצה של מחלקות האחראיות לתרגום טקסט לכמה מהמודלים הקידודיים של תווים שונים כמו Unicode ו- Reference Numbers. אנו יכולים גם ליצור שגרות מותאמות אישית משלנו לתרגום.

בואו נראה איך נוכל להמיר a חוּט לטקסט המקביל של Unicode:

@Test ציבורי בטל כאשרTranslate_thenCorrect () {UnicodeEscaper ue = UnicodeEscaper.above (0); תוצאת מחרוזת = ue.translate ("ABCD"); assertEquals ("\ u0041 \ u0042 \ u0043 \ u0044", תוצאה); }

הנה, אנו מעבירים את אינדקס התו ממנו אנו רוצים להתחיל את התרגום מֵעַל() שיטה.

LookupTranslator מאפשר לנו להגדיר טבלת בדיקה משלנו כאשר לכל תו יכול להיות ערך תואם, ואנחנו יכולים לתרגם כל טקסט למקבילה המקבילה.

7. מסקנה

במדריך מהיר זה ראינו סקירה כללית של מה טקסט של Apache Commons וכל כמה מהתכונות הנפוצות שלו.

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


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