המרת מחרוזת למקרה כותרת

1. הקדמה

במדריך קצר זה נראה כיצד להמיר a חוּט לתבנית מקרה הכותרת בג'אווה.

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

2. פתרונות ליבה של Java

2.1. מתבשל דרך חוּט תווים

דרך אחת להמיר חוּט לתואר הכותרת הוא על ידי איטרציה דרך כל הדמויות של חוּט.

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

בואו נשתמש במרחב לבן כמפריד מילים וניישם את הפיתרון הזה:

מחרוזת סטטית ציבורית convertToTitleCaseIteratingChars (טקסט מחרוזת) {if (text == null || text.isEmpty ()) {טקסט חוזר; } StringBuilder הומר = StringBuilder חדש (); convert בוליאני Next = true; עבור (char ch: text.toCharArray ()) {if (Character.isSpaceChar (ch)) {convertNext = true; } אחר אם (convertNext) {ch = Character.toTitleCase (ch); convertNext = false; } אחר {ch = Character.toLowerCase (ch); } המרה. הוסף (ch); } להחזיר convert.toString (); }

כפי שאנו רואים, אנו משתמשים בשיטה Character.toTitleCase לעשות את ההמרה, מאז הוא בודק את המקבילה המקבילה לא אופי באוניקוד.

אם נבדוק שיטה זו באמצעות התשומות הבאות:

זה הוא טיט זה, הוא טיט

אנו מקבלים את התפוקות הצפויות הבאות:

זה כותר זה, זה כותר

2.2. פיצול למילים

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

בואו נראה את זה בקוד, נשתמש שוב במרחב הלבן כמפריד מילים, והמועיל זרם ממשק API:

סופי סטטי פרטי מחרוזת WORD_SEPARATOR = ""; מחרוזת סטטית ציבורית convertToTitleCaseSplitting (טקסט מחרוזת) {if (text == null || text.isEmpty ()) {טקסט חוזר; } להחזיר מערכים .stream (text.split (WORD_SEPARATOR)) .מפה (מילה -> word.isEmpty ()? מילה: Character.toTitleCase (word.charAt (0)) + מילה. substring (1) .toLowerCase ()) .collect (Collectors.joining (WORD_SEPARATOR)); }

באמצעות אותן תשומות כמו קודם, אנו מקבלים את אותן תפוקות בדיוק:

זה כותר זה, זה כותר

3. שימוש באפצ'י קומונס

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

זה מספק ה WordUtils בכיתה, שיש לה את capitalizeFully () שיטה שעושה בדיוק את מה שאנחנו רוצים להשיג:

מחרוזת סטטית ציבורית convertToTileCaseWordUtilsFull (טקסט מחרוזת) {החזר WordUtils.capitalizeFully (טקסט); }

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

זה כותר זה, זה כותר

וגם ה WordUtils הכיתה מספקת אַחֵר לְנַצֵל() שיטה שעובד באופן דומה ל capitalizeFully (), מלבד זה רק משנה את התו הראשון של כל מילה. פירוש הדבר שהוא לא ממיר את שאר הדמויות באותיות קטנות.

בואו נראה איך נוכל להשתמש בזה:

מחרוזת סטטית ציבורית convertToTileCaseWordUtils (טקסט מחרוזת) {להחזיר WordUtils.capitalize (טקסט); }

עכשיו, אם נבדוק את זה באותן תשומות כמו קודם, נקבל את היציאות השונות האלה:

זה טיטל זה, הוא טיטל

4. שימוש ב- ICU4J

ספרייה נוספת בה אנו יכולים להשתמש היא ICU4J, המספקת תמיכה ב- Unicode וגלובליזציה.

כדי להשתמש בו עלינו להוסיף תלות זו לפרויקט שלנו:

 com.ibm.icu icu4j 61.1 

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

ספרייה זו עובדת בצורה דומה מאוד ל- WordUtils, אבל אנחנו יכולים לציין a BreakIterator לספר את השיטה כיצד אנו רוצים לפצל את חוּטולכן אילו מילים נרצה להמיר למקרה כותרת:

מחרוזת סטטית ציבורית convertToTitleCaseIcu4j (טקסט מחרוזת) {if (text == null || text.isEmpty ()) {טקסט חוזר; } להחזיר את UCharacter.toTitleCase (טקסט, BreakIterator.getTitleInstance ()); }

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

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

5. מסקנה

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

כמו תמיד, קוד המקור המלא של הדוגמאות זמין באתר GitHub.


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