כיצד להסיר את הדמות האחרונה של מחרוזת?

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

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

2. שימוש String.substring ()

הדרך הקלה ביותר היא להשתמש המובנה תשתית () שיטה של ה חוּט מעמד.

על מנת להסיר את הדמות האחרונה של נתון חוּט, עלינו להשתמש בשני פרמטרים: 0 כאינדקס ההתחלתי, ואינדקס של הדמות הלפני אחרונה. אנו יכולים להשיג זאת על ידי התקשרות חוּטשל אורך() שיטה וחיסור 1 מהתוצאה.

למרות זאת, שיטה זו אינה בטוחה ללא null ואם נשתמש במחרוזת ריקה זה ייכשל.

כדי להתגבר על בעיות עם מחרוזות ריקות וריקות, אנו יכולים לעטוף את השיטה בכיתת עוזר:

מחרוזת סטטית ציבורית removeLastChar (מחרוזות) 

אנו יכולים לשקף מחדש את הקוד ולהשתמש ב- Java 8:

מחרוזת סטטית ציבורית removeLastCharOptional (String s) {return Optional.ofNullable (s). filter (str -> str.length ()! = 0) .map (str -> str.substring (0, str.length () - 1 או Else (s); }

3. שימוש StringUtils.substring ()

במקום להמציא את הגלגל מחדש, נוכל להשתמש בו StringUtils מחלקה מ- Apache Commons Lang3 הספרייה, המציעה מועיל חוּט פעולות. אחד מהם הוא א בטוח תשתית () שיטה, המטפל בחריגים.

לכלול StringUtils עלינו לעדכן את pom.xml קוֹבֶץ:

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () דורש שלושה פרמטרים: נתון חוּט, אינדקס של התו הראשון (במקרה שלנו זה יהיה 0 תמיד) ואינדקס של הדמות הלפני אחרונה. שוב, אנחנו יכולים פשוט להשתמש ב- אורך() שיטה וחיסור 1:

מחרוזת TEST_STRING = "abcdef"; StringUtils.substring (TEST_STRING, 0, TEST_STRING.length () - 1);

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

4. שימוש StringUtils.chop ()

StringUtils הכיתה מספקת את לִקצוֹץ() שיטה שעובדת היטב עם כל תרחישי הקצה: מחרוזות ריקות ואפסיות.

קל מאוד לשימוש ודורש רק פרמטר אחד: ה- חוּט. מטרתה היחידה היא להסיר את הדמות האחרונה. לא יותר, לא פחות:

StringUtils.chop (TEST_STRING);

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

אנו יכולים גם להסיר את התו האחרון (או כל מספר תווים) מ- חוּט על ידי שימוש טוב בביטויים רגולריים.

לדוגמה, אנו יכולים להשתמש ב- החלף הכל() שיטה של חוּט הכיתה עצמה - שלוקח שני פרמטרים: ביטוי קבוע והחלפה חוּט:

TEST_STRING.replaceAll (". $", "");

שים לב כי מכיוון שאנחנו קוראים לשיטה ב- חוּט - הפעולה היא, כמובן, לא בטוח.

גַם, החלף הכל() וביטוי regex יכול להיות מורכב ממבט ראשון. אתה יכול לקרוא עוד על regex כאן, אך כדי להפוך את ההיגיון לקצת יותר ידידותי למשתמש, אנו יכולים לעטוף אותו בכיתה עוזרת:

מחרוזת סטטית ציבורית removeLastCharRegex (מחרוזות) {return (s == null)? null: s.replaceAll (". $", ""); }

שים לב שאם חוּט מסתיים בשורה חדשה ואז השיטה הנ"ל תיכשל כ- “.” ב- regex תואם כל תו למעט מסיימי קו.

לבסוף, בואו נכתוב מחדש את היישום עם Java 8:

מחרוזת סטטית ציבורית removeLastCharRegexOptional (String s) {return Optional.ofNullable (s) .map (str -> str.replaceAll (". $", "")) .orElse (s); }

6. מסקנה

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

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

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