بکندباز

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

در این آموزش با کمک مثال هایی با متد ()split در جاوا آشنا می شویم.

متد  split()، رشته را بر اساس regex مشخص شده تقسیم می کند و آرایه ای از رشته های فرعی را برمی گرداند.

مثال

class Main {
  public static void main(String[] args) {
    String text = "Java is a fun programming language";

    // split string from space
    String[] result = text.split(" ");


    System.out.print("result = ");
    for (String str : result) {
      System.out.print(str + ", ");
    }
  }
}

// Output: result = Java, is, a, fun, programming, language,

سینتکس split()

سینتکس متد split()به صورت زیر است:

string.split(String regex, int limit)

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


پارامترهای split()

متد رشته split()می تواند دو پارامتر داشته باشد:

  • regex – رشته بر اساس این regex تقسیم می شود (می تواند رشته باشد)
  • limit (اختیاری) – تعداد زیر رشته های حاصل را کنترل می کند

اگر پارامتر limit ارسال نشود، split()تمام زیررشته‌های ممکن را برمی‌گرداند.


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

  • آرایه ای از رشته های فرعی را برمی گرداند

توجه: اگر “عبارت منظم (regex)” ارسال شده به split()نامعتبر باشد، متد split() خطای PatternSyntaxExpression را ارسال می کند.


مثال 1: split() بدون پارامتر limit

// importing Arrays to convert array to string
// used for printing arrays
import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    String vowels = "a::b::c::d:e";

    // splitting the string at "::"
    // storing the result in an array of strings
    String[] result = vowels.split("::");


    // converting array to string and printing it
    System.out.println("result = " + Arrays.toString(result));
  }
}

خروجی

نتیجه = [a, b, c, d:e]

در اینجا، ما رشته را بر اساس :: تقسیم می کنیم . از آنجایی که پارامتر limit ارسال نشده است، آرایه برگشتی شامل تمام رشته های فرعی است.


split() با پارامتر limit

  • اگر پارامتر limit برابر با 0 یا منفی باشد، split()آرایه ای حاوی تمام رشته های فرعی را برمی گرداند.
  • اگر پارامتر limit مثبت باشد (مثلاً n)، split()حداکثر n رشته فرعی را برمی گرداند.

مثال 2: split() با پارامتر limit

// importing Arrays to convert array to string
import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    String vowels = "a:bc:de:fg:h";

    // splitting array at ":"

    // limit is -2; array contains all substrings
    String[] result = vowels.split(":", -2);

    System.out.println("result when limit is -2 = " + Arrays.toString(result));

    // limit is 0; array contains all substrings
    result = vowels.split(":", 0);
    System.out.println("result when limit is 0 = " + Arrays.toString(result));

    // limit is 2; array contains a maximum of 2 substrings
    result = vowels.split(":", 2);
    System.out.println("result when limit is 2 = " + Arrays.toString(result));

    // limit is 4; array contains a maximum of 4 substrings
    result = vowels.split(":", 4);
    System.out.println("result when limit is 4 = " + Arrays.toString(result));

    // limit is 10; array contains a maximum of 10 substrings
    result = vowels.split(":", 10);
    System.out.println("result when limit is 10 = " + Arrays.toString(result));
  }
}

خروجی

result when limit is -2 = [a, bc, de, fg, h]
result when limit is 0 = [a, bc, de, fg, h]
result when limit is 2 = [a, bc:de:fg:h]
result when limit is 4 = [a, bc, de, fg:h]
result when limit is 10 = [a, bc, de, fg, h]

نکته: متد split() پارامتر regex را به عنوان اولین آرگومان می گیرد. اگر نیاز به استفاده از کاراکترهای خاص مانند: \|^*+ و … دارید، باید  این کاراکترها را escape کنید. به عنوان مثال، باید برای تقسیم بر اساس علامت + باید از \\+ استفاده کنیم.


مثال 3: split() بر اساس کاراکتر +

// importing Arrays to convert array to string
// used for printing arrays
import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    String vowels = "a+e+f";

    // splitting the string at "+"
    String[] result = vowels.split("\\+");


    // converting array to string and printing it
    System.out.println("result = " + Arrays.toString(result));
  }
}

خروجی

result = [a, e, f]

در اینجا، برای تقسیم یک رشته بر اساس +، از \\+ استفاده کرده ایم.به این دلیل +است که یک کاراکتر خاص است (در regex این کاراکتر معنای خاصی دارد).

backendbaz

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

دیدگاه‌ها

*
*