עדכוני API למחרוזות ב- Java 12

1. הקדמה

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

2. לְשַׁנֵן()

ה לְשַׁנֵן() השיטה מתאימה את הכניסה של כל שורה במחרוזת על סמך הטיעון שהועבר אליה.

מתי לְשַׁנֵן() נקרא במחרוזת, הפעולות הבאות נעשות:

  1. המחרוזת מופרדת רעיונית לקווים באמצעות שורות(). שורות() הוא ה- API של String שהוצג ב- Java 11.
  2. לאחר מכן, כל שורה מותאמת בהתאם ל int טַעֲנָה נ הועבר אליו ואז הוסף לו הזנת שורה "\ n".
    1. אם נ > 0, אם כן נ רווחים מוכנסים בתחילת כל שורה.
    2. אם נ<0, אם כן עד לנ תווי רווח לבן מוסרים מתחילת כל שורה. במקרה ששורה מסוימת אינה מכילה מספיק שטח לבן, אזי כל התווים המובילים של הרווח הלבן יוסרו.
    3. אם נ == 0, ואז הקו נשאר ללא שינוי. עם זאת, מסופי הקו עדיין מנורמלים.
  3. לאחר מכן משורשרים השורות המתקבלות ומחזירות אותם.

לדוגמה:

@ מבחן ציבורי בטל כאשרPositiveArgument_thenReturnIndentedString () {String multilineStr = "זהו \ נא רב קו \ nstring."; מחרוזת outputStr = "זהו \ n מחרוזת רב-קו. \ N"; מחרוזת postIndent = multilineStr.indent (3); assertThat (postIndent, equalTo (outputStr)); }

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

@ מבחן ציבורי בטל כאשר NegativeArgument_thenReturnReducedIndentedString () {String multilineStr = "זה \ n מחרוזת \ n \" רב-קו. "; מחרוזת outputStr = "זהו \ n מחרוזת רב-קו. \ N"; מחרוזת postIndent = multilineStr.indent (-2); assertThat (postIndent, equalTo (outputStr)); }

3. שינוי צורה()

אנחנו יכולים להחיל פונקציה על זֶה מחרוזת באמצעות שינוי צורה() שיטה. על הפונקציה לצפות לסינגל חוּט ויכוח ולהפיק תוצאה:

@Test הציבור בטל כאשרTransformUsingLamda_thenReturnTransformedString () {String result = "שלום" .transform (קלט -> קלט + "עולם!"); assertThat (תוצאה, equalTo ("שלום עולם!")); }

אין צורך שהפלט צריך להיות מחרוזת. לדוגמה:

@Test הציבור בטל כאשרTransformUsingParseInt_thenReturnInt () {int result = "42" .transform (Integer :: parseInt); assertThat (תוצאה, שווה ל- (42)); }

4. מסקנה

במאמר זה בחנו את החדש חוּט ממשקי API ב- Java 12. כרגיל, ניתן למצוא קטעי קוד ב- GitHub.


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