menusearch
javapro.ir

متد ()split در کلاس String

جستجو
سه شنبه ۴ آبان ۱۴۰۰ | ۱۱:۱۹:۱۶
۱۳۹۶/۸/۱۴ یکشنبه
(2)
(0)
متد ()split در کلاس String
متد ()split در کلاس String
به نام خدا

       
تقدیم به هموطنان عزیزم



جاوا را با لذت یاد بگیر!



آموزش زبان برنامه نویسی جاوا

نمونه مثال از کلاس String

متد ()split

نویسنده : رحمان زارعی

جاوا را ساده،آسان و شیرین بنوشید!!!


سلام. دوست من امروز قصد داریم یکی دیگر از متد‌‌‌‌های موجود در کلاس String را با هم بررسی کنیم.
متد ()split برای تقسیم یک String به زیر رشته های آن بر اساس جداکننده(de limit er) داده شده استفاده می‌شود.
به بیان ساده تر وقتی قصد داریم یک String را بر اساس یک علامت خاص قطعه قطعه یا تجزیه کنیم از این متد استفاده می‌کنیم.


نکته: اون علامت خاص که بر اساس آن یک String را به زیر رشته‌‌‌‌های آن تقسیم می‌کنیم همون جداکننده(de limit er) ما است.

•    با مثال متوجه خواهید شد.

برای مثال فرض کنید یک String به صورت زیر داشته باشیم:

String str ="r 2 5";
حالا قصد داریم رشته str را بر اساس فاصله بین زیر رشته‌‌‌‌های آن، تجزیه کنیم.
نکته: منظور از فاصله بین زیررشته‌‌‌‌های یک رشته همون space یا " " است.
در زیر فاصله بین زیررشته‌‌‌‌های رشته "r 2 5" را با رنگ سبز نشان داده ایم:

متد split  در جاوا
همان طور که گفتیم قصد داریم رشته str را بر اساس علامت فاصله (" ") به زیر رشته‌‌‌‌های آن تجزیه یا جدا کنیم. اگر رشته str را با استفاده از متد split و بر اساس علامت فاصله (" ") جدا کنیم، نتیجه سه رشته مجزا به صورت زیر خواهد بود:

کاربرد متد split در جاوا

•    همان طور که مشاهده کردید ما رشته "r 2 5" را با استفاده از متد split و بر اساس علامت " " به سه زیر رشته آن تقسیم(جدا) کردیم. جلوتر مثال کدنویسی میزنیم بهتر درک خواهید کرد.

متد split دارای دو پارامتر مختلف است:

String[] split(String regex):
 
•    این متد یک رشته را بر اساس یک علامت خاص به زیر رشته‌‌‌‌های آن جدا می‌کند. به بیانی دیگر این متد زیر رشته‌‌‌‌های یک String را بر اساس یک علامت خاص تکه تکه می‌کند و به صورت آرایه ای از String برمی گرداند.

•    پارامتر regex نقش علامتی که بر اساس آن String مورد نظر را قطعه قطعه می‌کنیم، برعهده دارد.
Example:
 
package java like ;

public class Test9 {

   public static void main(String[] args) {
       String str = "r 2 5";
       String array[] = str.split(" ");

       for (inti = 0; i < array.length; i++)
           System.out.println("Separated string " + i + ": " + array[i]);
   }

}
 
خروجی(output):
Separated string 0: r
Separated string 1: 2
Separated string 2: 5
 
توضیحات:

•    در مثال بالا ما رشته str را با استفاده از متد split به سه زیر رشته آن، بر اساس علامت فاصله یا " " تقسیم کرده و درون آرایه از نوع String ریخته ایم.

String str = "r 2 5";
 
•    یک String تعریف کرده ایم که بین زیر رشته‌‌‌‌های آن علامت فاصله است.
String array[] = str.split(" ");
 
•    رشته str را بر اساس علامت " " یا فاصله به زیر رشته‌‌‌‌های آن جدا کرده و درون آرایه از نوع String ریخته ایم. در هر خانه از آرایه رشته جدا شده از رشته str قرار گرفته است.
for (int i = 0; i < array.length; i++)
           System.out.println("Separated string " + i + ": " + array[i]);
   }
 
•    حال رشته‌‌‌‌های جدا شده ای که درون آرایه ما قرار گرفته اند را با دستور بالا چاپ کرده ایم.

متد دوم........


String[] split(String regex, int limit ):
 
•    این متد نیز مانند متد قبل برای جدا کردن زیر رشته‌‌‌‌های یک String بر اساس علامت خاص است. تنها تفاوت این متد با متد قبل این است که می‌توانیم برای تعداد زیر رشته‌‌‌‌های استخراج شده از یک رشته محدودیت ایجاد کنیم.

نکته: برای هر زیر رشته استخراج شده از یک رشته از اصطلاح token استفاده می‌کنیم.
مثلا اگر رشته "r 2 5" را بر اساس علامت " " تکه تکه کنیم، به هر زیر رشته آن یک token می‌گوییم. مثلا رشته"r" یک token رشته "2" یک token و رشته "5" یک token خواهد بود.

•    حالا کاربرد متد String[] split(String regex, int limit ) چیست؟ با این متد می‌توانیم تعداد token یا زیر رشته‌‌‌‌های جدا شده از یک رشته را مشخص کنیم.

•    پس متد split بر اساس regex، به تعداد   limit، زیر رشته‌‌‌‌های یک String را تکه تکه کرده و به صورت آرایه از نوع String برمی گرداند. با مثال بهتر متوجه می‌شوید.
Example:
package java like  ;

public class Test9 {

   public static void main(String[] args) {
       String str = "Welcome-to-javapro.ir";
       String array1[] = str.split("-");
       System.out.println("");
       System.out.println("Return Value :");
       for (int i = 0; i < array1.length; i++)
           System.out.println("Separated string " + i + ": " + array1[i]);

       System.out.println("");
       System.out.println("Return Value :");
       String array2[] = str.split("-", 2);

     for (int i = 0; i < array2.length; i++)
           System.out.println("Separated string " + i + ": " + array2[i]);
   }

}
 
خروجی(output):
Return Value :
Separated string 0: Welcome
Separated string 1: to
Separated string 2: javapro.ir

Return Value :
Separated string 0: Welcome
Separated string 1: to-javapro.ir
 
توضیحات:

در مثال بالا ما زیر رشته‌‌‌‌های رشته str را با دو متد مختلف split تکه تکه کردیم.

String array1[] = str.split("-");
 
•     در این دستور با استفاده از متد split و بر اساس علامت "-" تمام زیر رشته‌‌‌‌های (token های) رشته str را درون آرایه ای از نوع String ریخته ایم. در اینجا محدودیتی برای تعداد زیر رشته‌‌‌‌های جدا شده رشته str ایجاد نکردیم. و خروجی زیر رشته‌‌‌‌های استخراج شده رشته str به صورت زیر است:

Separated string 0: Welcome
Separated string 1: to
Separated string 2: javapro.ir



String array2[] = str.split("-", 2);
•    در دستور بالا ما گفتیم تنها حق داری دو زیر رشته یا token از رشته str را بر اساس علامت "-" جدا کنی. خروجی زیر رشته‌‌‌‌های جدا شده از رشته str بر اساس دستور بالا به صورت زیر خواهد بود:
Separated string 0: Welcome
Separated string 1: to-javapro.ir

•    همان طور که می‌بینید تنها دو زیر رشته از رشته str بر اساس علامت "-" جدا شده است.

Example:
 
package java like  ;
public class SplitExample {
   public static void main(String args[]) {
       String str = new String("28/12/2013");
       System.out.println("split(String regex):");
       String array1[] = str.split("/");
       for (String temp : array1) {
           System.out.println(temp);
       }
       System.out.println("split(String regex, int limit ) with limit =2:");
       String array2[] = str.split("/", 2);
     for (String temp : array2) {
           System.out.println(temp);
       }

   }
}
 
خروجی(output):
split(String regex):
28
12
2013
split(String regex, int limit ) with limit =2:
28
12/2013
 
نکته: اگر مقدار limit پارامتر موجود در متد split(String regex, int limit ) منفی یا صفر بود چه اتفاقی می‌افتد؟ با مثال به این مسئله می‌پردازیم:
Example:
در مثال زیر از متد split(String regex) استفاده کردیم.یعنی از متد split ای که محدودیتی در جدا کردن زیر رشته‌‌‌‌های یک رشته ندارد، استفاده کرده ایم.
package java like ;

public class Test110 {

   public static void main(String[] args) {
       String str = "_a_b_c_d_e_f_";
       String array2[] = str.split("_");

     for (int i = 0; i < array2.length; i++)
           System.out.println("Separated string " + i + ": " + array2[i]);

   }

}
 
خروجی(output):
Separated string 0:
Separated string 1: a
Separated string 2: b
Separated string 3: c
Separated string 4: d
Separated string 5: e
Separated string 6: f


Example:
در مثال زیر از متد split(String regex, int limit ) استفاده کردیم. و مقدار پارامتر limit را صفر قرار داده ایم:

package java like ;

public class Test110 {

  public static void main(String[] args) {
       String str = "_a_b_c_d_e_f_";
       String array2[] = str.split("_", 0);

       for (int i = 0; i < array2.length; i++)
           System.out.println("Separated string " + i + ": " + array2[i]);

   }

}
 
خروجی(output):
Separated string 0:
Separated string 1: a
Separated string 2: b
Separated string 3: c
Separated string 4: d
Separated string 5: e
Separated string 6: f
 
•    همان طور که در خروجی دو مثال قبل مشاهده می‌کنید، هیچ تفاوتی بین خروجی ها وجود ندارد. به عبارت دیگر وقتی مقدار limit پارامتر موجود در متد split(String regex, int limit ) برابر صفر قرار می‌دهیم هیچ تفاوتی با دستور split(String regex) نمی‌کند.

•    پس وقتی مقدار پارامتر limit متد split برابر صفر باشد همه زیر رشته‌‌‌‌های یک رشته بدون محدودیت بر اساس علامت مورد نظر تکه تکه می‌شوند.
Example:
در مثال زیر از متد split(String regex, int limit ) استفاده کردیم. و مقدار پارامتر limit را یک عدد منفی قرار داده ایم:
package java like  ;

public class Test110 {

   public static void main(String[] args) {
       String str = "_a_b_c_d_e_f_";
       String array2[] = str.split("_", -1);

       for (int i = 0; i < array2.length; i++)
           System.out.println("Separated string " + i + ": " + array2[i]);

   }

}
 
خروجی(output):
Separated string 0:
Separated string 1: a
Separated string 2: b
Separated string 3: c
Separated string 4: d
Separated string 5: e
Separated string 6: f
Separated string 7:

•    وقتی مقدار پارامتر limit متد split(String regex, int limit ) برابر یک عدد منفی باشد ( فرق نمیکنه چه عدد منفی باشد) ،سمت راست آخرین فضای خالی بعد علامتی که بر اساس آن یک رشته را تجزیه می‌کنیم نیز به عنوان یک زیر رشته یا token از رشته اصلی جدا می‌شود. اما در حالتی که limit برابر با صفر یا یک عدد مثبت بود آخرین فضای خالی بعد علامت جدا کننده نادیده گرفته میشد.

نتیجه گیری کلی:در متد split(String regex, int  limit ):


1.    وقتی limit برابر با صفر یا عدد مثبت باشد( limit >=0) آخرین فضای خالی بعد از علامت جدا کننده نادیده گرفته می‌شود:شکل(1)

کاربرد متد split در جاوا

•    منظور از فضای خالی بعد از آخرین علامت جداکننده بخشی است که با فلش بهش اشاره شده است. خب بله حق دارید فضای خالی بعد از آخرین علامت "_" دیده نمی‌شود اما دیگه متد split با مقدر limit منفی اون فضا را در نظر می‌گیرد.



2.    وقتی limit برابر یک عدد منفی باشد ( limit <0) فضای سفید بعد از آخرین علامت جداکننده به عنوان یک زیر رشته یا token در نظر گرفته می‌شود.

متد split با همه پارامتر‌‌‌‌های مختلف و مقدار limit ‌‌‌‌های مثبت یا منفی یا صفر، اولین فضای سفید قبل از علامت جداکننده را درنظر می‌گیرند:شکل(2)


کاربرد متد split در جاوا

نکته مهم: اگر در یک رشته در کنار هم علامت جدا کننده تکراری داشته باشیم چه اتفاقی می‌افتد؟ به مثال زیر توجه کنید:


.....ادامه این جلسه آموزشی رو به صورت کتاب الکترونیکی (PDF) در لینک زیر دانلود کنید:



کانال تلگرام آموزش جاوا


این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)


دانلود کتاب آموزش جاوا
لینک دانلود


باز نشر این مطلب تنها بصورت PDF و با ذکر منبع (لینک سایت) بلامانع است.

برای با خبر شدن از جدیدترین مطالب آموزشی جاواعضو کانال تلگرام ما شوید.
گفتگو را شروع کنید
رزو مشاوره و تدریس خصوصی برنامه نویسی و سفارش انواع پروژه‌‌‌‌های برنامه نویسی