replaceAll()
می خواهی «جایگزینی با عبارت باقاعده» انجام دهی؟ متد replaceAll() دقیقا همین کار را انجام می دهد. «عبارت باقاعده (Regular Expression)» الگویی برای پیدا کردن بخش های متن است. این متد روی رشته اصلی کار نمی کند؛ یک رشته تازه می سازد.
تعریف و کاربرد replaceAll()
متد replaceAll(regex, replacement) تمام بخش هایی را که با الگوی regex جور می شوند، با متن replacement عوض می کند. نتیجه یک «رشته (String)» جدید است.
نکته: می توانی از «ارجاع پشتی (Backreference)» با $n استفاده کنی؛ $0 یعنی کل متن مطابق شده.
امضای متد (Syntax)
public String replaceAll(String regex, String replacement);
مثال 1: جایگزینی همه «cat» ها
در اینجا با الگوی بی تفاوت به بزرگی حروف، همه «cat» ها «dog» می شوند.
public class Main {
public static void main(String[] args) {
String myStr = "I love cats. Cats are very easy to love. Cats are very popular.";
String regex = "(?i)cat";
String result = myStr.replaceAll(regex, "dog");
System.out.println(result);
}
}
مثال 2: استفاده از ارجاع پشتی با $0
اینجا اعداد با پرانتز دورشان چاپ می شوند. $0 کل تطبیق را برمی گرداند.
public class Main {
public static void main(String[] args) {
String myStr = "Quest complete! Earned 30 gold and 500 experience.";
String regex = "[0-9]+";
String result = myStr.replaceAll(regex, "($0)");
System.out.println(result);
}
}
گام های عملی سریع
- رشته را آماده کن. یک متن ساده انتخاب کن.
- الگوی regex را بنویس. دقیق و کوتاه.
- رشته جایگزین را تعیین کن. ساده و واضح.
- متد را فراخوانی کن و خروجی را چاپ کن.
خطاها و هشدارها
هشدار: اگر الگو غلط باشد، استثنای PatternSyntaxException می گیری. الگو را ساده کن.
نکته: برای جایگزینی «کاراکتر» ساده، گاهی replace() کافی است.
مطالعه بیشتر و لینک ها
آموزش الگوها: Java RegEx. صفحه مرجع: W3Schools: replaceAll(). همچنین مقایسه الگو با matches() را ببین.
جمع بندی سریع
- جایگزینی با عبارت باقاعده، همه تطبیق ها را عوض می کند.
- رشته جدید برمی گردد؛ اصلی تغییر نمی کند.
- با $0 و گروه ها، جایگزینی هوشمند بساز.
- الگو غلط باشد، خطا می گیری.