הסר או החלף חלק ממחרוזת ב- Java

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

במדריך זה נבחן אמצעים שונים שנוכל להסיר או להחליף חלק מ- a חוּט בג'אווה.

נחקור הסרה ו / או החלפת מצע באמצעות a חוּט API, ואז משתמשים ב- StringBuilder ממשק API ולבסוף באמצעות StringUtils מחלקה של ספריית Apache Commons.

כבונוס, נבדוק גם החלפת מְדוּיָק word באמצעות ממשק ה- API של String ו- Apache Commons RegExUtils מעמד.

2. חוּט ממשק API

אחת השיטות הפשוטות והפשוטות ביותר להחלפת מצע היא שימוש ב- להחליף, להחליף את כל אוֹ החלף ראשון של א כיתת מיתרים.

ה החלף() השיטה לוקחת שני ארגומנטים - טקסט יעד והחלפה:

מאסטר מיתרים = "שלום עולם באלדונג!"; יעד מחרוזת = "באלדונג"; החלפת מחרוזות = "Java"; מחרוזת מעובדת = master.replace (יעד, החלפה); assertTrue (מעובד. מכיל (החלפה)); assertFalse (processed.contains (target));

קטע הקוד לעיל יניב פלט זה:

שלום Java העולמי!

אם נדרש ביטוי רגולרי בבחירת המטרה, אז החלף הכל() אוֹ החלף ראשון () צריכה להיות שיטת הבחירה. כשמם, החלף הכל() יחליף כל התרחשות תואמת, בעוד ש- החלף ראשון () יחליף את ההתרחשות המותאמת הראשונה:

מחרוזת master2 = "ברוך הבא לבלדונג, שלום עולם באלדונג"; מחרוזת regexTarget = "(Baeldung) $"; מחרוזת מעובדת 2 = master2.replaceAll (regexTarget, החלפה); assertTrue (process2.endsWith ("Java"));

הערך של מעובד 2 יהיה:

ברוך הבא ל- Baeldung, Hello World Java

זה בגלל שה regex סיפק כ regexTarget יתאים רק למופע האחרון של באלדונג. בכל הדוגמאות המפורטות לעיל, אנו יכולים להשתמש בתחליף ריק והוא יסיר למעשה את a יַעַד מ לִשְׁלוֹט.

3. StringBuilder ממשק API

אנו יכולים גם לתפעל טקסט ב- Java באמצעות ה- StringBuilder מעמד. שתי השיטות כאן הן לִמְחוֹק() ו החלף().

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

מאסטר מיתרים = "שלום עולם באלדונג!"; יעד מחרוזת = "באלדונג"; החלפת מחרוזות = "Java"; int startIndex = master.indexOf (יעד); int stopIndex = startIndex + target.length (); בונה StringBuilder = StringBuilder חדש (מאסטר);

עכשיו אנחנו יכולים להסיר את יַעַד עם ה לִמְחוֹק():

builder.delete (startIndex, stopIndex); assertFalse (builder.toString (). מכיל (target));

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

builder.replace (startIndex, stopIndex, החלפה); assertTrue (builder.toString (). מכיל (החלפה));

הבדל אחד לכאורה בין השימוש ב- StringBuilder וה חוּט ה- API הוא שעלינו להתחיל את אינדקס ההפסקה ואת יַעַדחוּט בְּעָצמֵנוּ.

4. StringUtils מעמד

שיטה נוספת שנשקול היא ספריית Apache Commons.

ראשית, בואו נוסיף את התלות הנדרשת לפרויקט שלנו:

 org.apache.commons commons-lang3 3.8.1 

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

ה StringUtils בכיתה יש שיטות להחלפת תשתית של a חוּט:

מאסטר מיתרים = "שלום עולם באלדונג!"; יעד מחרוזת = "באלדונג"; החלפת מחרוזות = "Java"; מחרוזת מעובדת = StringUtils.replace (מאסטר, יעד, החלפה); assertTrue (מעובד. מכיל (החלפה));

יש גרסה עמוסה יותר של ה- החלף() שלוקח מספר שלם מקסימום פרמטר, הקובע את מספר המופעים להחלפה. אנחנו יכולים גם להשתמש ב- vervangIgnoreCase () אם רגישות למקרה אינה מהווה עניין:

מחרוזת master2 = "שלום עולם באלדונג!"; מחרוזת target2 = "baeldung"; מחרוזת process2 = StringUtils.replaceIgnoreCase (master2, target2, החלפה); assertFalse (processed2.contains (target));

5. החלפת מילים מדויקות

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

הדרך הפשוטה לבצע החלפה זו היא שימוש בביטוי רגולרי עם גבולות מילים.

המילה גבול ביטוי קבוע היא \ b. צירוף המילה הרצויה בתוך ביטוי רגולרי זה יתאים רק למופעים מדויקים.

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

משפט מחרוזת = "מכונית אינה זהה לכרכרה, וכמה מטוסים יכולים לשאת בתוכם מכוניות!"; מחרוזת regexTarget = "\ bcar \ b"; מחרוזת exactWordReplaced = phrase.replaceAll (regexTarget, "משאית");

ה exactWordReplaced מחרוזת מכילה:

"משאית אינה זהה לכרכרה, וכמה מטוסים יכולים לשאת בתוכם מכוניות!"

רק המילה המדויקת תוחלף. שים לב לקו נטוי לאחור תמיד צריך להימלט בעת עבודה עם ביטויים רגולריים בג'אווה.

דרך חלופית לבצע החלפה זו היא באמצעות RegExUtils מחלקה מספריית אפאצ'י קומונס, שניתן להוסיף כתלות כפי שראינו בסעיף הקודם:

מחרוזת regexTarget = "\ bcar \ b"; מחרוזת exactWordReplaced = RegExUtils.replaceAll (משפט, regexTarget, "משאית"); 

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

6. מסקנה

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

כרגיל, קוד המקור השלם זמין ב- Github.


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