תוספות API של Java 11 String API

1. הקדמה

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

2. חזור()

כפי שהשם מרמז, חזור() שיטת מופע חוזרת על תוכן המחרוזת.

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

@ מבחן ציבורי בטל כאשר RepeatStringTwice_thenGetStringTwice () {String output = "La". חזור (2) + "ארץ"; הוא (פלט). שווה ("לה לה לנד"); }

בנוסף, חזור() מחזיר מחרוזת ריקה אם המחרוזת ריקה או הספירה היא אפס.

3. לְהִתְפַּשֵׁט*()

ה לְהִתְפַּשֵׁט() שיטת מופע מחזירה מחרוזת עם הסרת כל המרחבים הלבנים המובילים והנגררים:

@ מבחן ציבורי בטל כאשר StripString_thenReturnStringWithoutWhitespaces () {is ("\ n \ t שלום \ u2005". סטריפ ()). שווה ("שלום"); }

ג'אווה 11 הוסיפה גם שיטות stripLeading () ו stripTrailing (), המטפלים במרחבים לבנים מובילים ונגררים, בהתאמה.

3.1. הבדל בין לְהִתְפַּשֵׁט() ו מְטוּפָּח()

לְהִתְפַּשֵׁט*() קובע אם הדמות מבוססת על שטח לבן או לא Character.isWhitespace (). במילים אחרות, הוא מודע לדמויות המרחב הלבן של Unicode.

זה שונה מ מְטוּפָּח(), המגדיר רווח ככל תו שקטן או שווה לדמות החלל Unicode (U + 0020). אם נשתמש מְטוּפָּח() בדוגמה הקודמת נקבל תוצאה אחרת:

@ מבחן ציבורי בטל כאשר TriMadvanceString_thenReturnStringWithWhitespaces () {is ("\ n \ t שלום \ u2005" .trim ()). שווה ("שלום \ u2005"); }

שים לב איך מְטוּפָּח() הצליח לקצץ את המרחב הלבן המוביל, אך הוא לא קיצץ את המרחב הלבן הנגרר. זה בגלל ש מְטוּפָּח() אינו מודע לדמויות המרחב הלבן של Unicode ולכן אינו רואה '\ u2005 ' דמות חלל לבן.

4. ריק()

ה ריק() שיטת מופע מחזירה נָכוֹן אם המחרוזת ריקה או מכילה רק רווח לבן. אחרת, הוא חוזר שֶׁקֶר:

@ מבחן ציבורי בטל כאשר BlankString_thenReturnTrue () {assertTrue ("\ n \ t \ u2005" .isBlank ()); }

באופן דומה, ה ריק() שיטה מודעת לתווים של חלל לבן של Unicode, ממש כמו לְהִתְפַּשֵׁט().

5. שורות()

ה שורות() שיטת מופע מחזירה א זרם שורות שחולצו מהמחרוזת, מופרדות על ידי מסופי קו:

@ מבחן ציבורי בטל כאשר MultilineString_thenReturnNonEmptyLineCount () {String multilineStr = "זהו \ n \ n מחרוזת רב-קו \ n."; longlineCount = multilineStr.lines () .filter (String :: isBlank) .count (); הוא (lineCount). שווה (3L); }

מסוף קו הוא אחד מהבאים: "\ N","\ R", אוֹ "\ R \ n".

הזרם מכיל קווים לפי סדר הופעתם. מסוף הקווים מוסר מכל קו.

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

6. מסקנה

במאמר מהיר זה, בחנו את ממשקי ה- API החדשים של String ב- Java 11.

לבסוף, ניתן למצוא קטעי קוד ב- GitHub.