بکندباز

متد replaceAll()‎ در جاوا

در این آموزش با استفاده از مثال هایی با متد replaceAll()‎ آشنا می شویم.

متد replaceAll()‎ هر زیررشته ای را که با regex مطابقت دارد با متن مشخص شده جایگزین می کند.

مثال

class Main {
  public static void main(String[] args) {
    String str1 = "Java123is456fun";

    // regex for sequence of digits
    String regex = "\\d+";

    // replace all occurrences of numeric
    // digits by a space
    System.out.println(str1.replaceAll(regex, " "));


  }
}

// Output: Java is fun

سینتکس ()replaceAll

سینتکس replaceAll()‎روش به صورت زیر است:

string.replaceAll(String regex, String replacement)

در اینجا، string یک شی از Stringکلاس است.


پارامترهای replaceAll()‎

متد replaceAll()‎ دو پارامتر دارد.

  • regex – یک regex (می تواند یک رشته معمولی باشد) که قرار است جایگزین شود
  • replacement – رشته های فرعی پیدا شده در متن، با این رشته جایگزین می شوند

مقدار بازگشتی متد replaceAll()‎

متد replaceAll()‎ :

رشته جدیدی را برمی گرداند که در آن هر پیدایش از رشته فرعی با رشته جایگزین جایگزین می شود .


مثال 1: متد replaceAll()‎

class Main {
  public static void main(String[] args) {
    String str1 = "aabbaaac";
    String str2 = "Learn223Java55@";

    // regex for sequence of digits
    String regex = "\\d+";

    // all occurrences of "aa" is replaceAll with "zz"
    System.out.println(str1.replaceAll("aa", "zz"));  // zzbbzzac


    // replace a digit or sequence of digits with a whitespace
    System.out.println(str2.replaceAll(regex, " "));  // Learn Java @


  }
}

در مثال بالا، "\\d+" یک عبارت منظم است که با یک یا چند رقم مطابقت دارد.


escape کاراکترها در replaceAll()‎

متد replaceAll()‎ می تواند یک regex یا یک رشته معمولی را به عنوان اولین آرگومان در نظر بگیرد. به این دلیل است که یک رشته معمولی به خودی خود یک regex است.

در regex کاراکتر هایی وجود دارند که معنای خاصی دارند. این متاکاراکترها عبارتند از:

\ ^ $. | ? * + {} [] ()

اگر می‌خواهید زیررشته‌های حاوی این متاکاراکترها را مطابقت دهید، می‌توانید با استفاده از کاراکتر \ از این کاراکتر ها escape کنید یا از متد replace()‎ استفاده کنید.

// Program to replace the + character
class Main {
  public static void main(String[] args) {
    String str1 = "+a-+b";

    // replace "+" with "#" using replaceAll()‎
    // need to escape "+"
    System.out.println(str1.replaceAll("\\+", "#"));  // #a-#b


    // replace "+" with "#" using replace()‎
    System.out.println(str1.replace("+", "#"));  // #a-#b

  }
}

همانطور که می بینید، وقتی از متد replace()‎ استفاده می کنیم، نیازی به escape متاکاراکترها نداریم. برای کسب اطلاعات بیشتر، به این آدرس مراجعه کنید: متد replace()‎


اگر نیاز دارید که فقط اولین رخداد زیررشته منطبق را جایگزین کنید، از  متد ()replaceFirst استفاده کنید.

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*