استخراج و جایگزین کردن رشته ها

براي استخراج قسمتي از يک رشته مي توان از متد ()substring استفاده کرد. اين متد دو آرگومان قبول مي کند که يکي انديس شروع و ديگري طولي از رشته را که مي خواهيم استخراج کنيم را نشان مي دهد. به مثال زير توجه کنيد.

String str1 = "This is a sample string.";

String str2 = str1.substring(10, 16);

System.out.println("str1 = " + str1);
System.out.println("str2 = " + str2);
str1 = This is a sample string.
str2 = sample

استخراج را از انديس 10 شروع کرده ايم (آرگومان اول که عدد 10 است). همانطور که مشاهده مي کنيد کلمه “sample” از انديس 10 شروع شده است (کاراکتر يازدهم). آرگومان دوم نشان مي دهد که ما تا چندمین کاراکتر را مي خواهيم استخراج کنيم. ازآنجاييکه قرار است کلمه sample را استخراج کنیم و این کلمه 6 حرفی است پس باید آرگومان دوم را 16 بنویسیم یعنی قرار است از 10 تا 16 را استخراج کنم. اگر نخواهيد که مکان قرار گرفتن کلمه “sample” را به صورت دستي شمارش کنيد مي توانيد با استفاده از متد ()indexOf اين کار را انجام دهيد.

String str2 = str1.substring(str1.indexOf("sample"), 16);

يکي ديگر ازسربارگذاريهاي متد ()substirng فقط يک آرگومان که براي تعيين کردن انديس شروع استخراج به کار مي رود را قبول مي کند در نتيجه استخراج از اين انديس شروع شده و تا پايان رشته ادامه مي يابد.

جايگزين کردن رشته ها با استفاده از متد replace، replaceFirst و repalceAll

با استفاده از متد ()replace مي توان يک رشته خاص را با يک رشته ديگر عوض کرد. به عنوان مثال در کد زير مي توان کلمه “dog” را با کلمه “cat” عوض کرد.

String str1 = "That dog is a lovely dog.";
System.out.println(str1);
System.out.println("Replacing all dogs with cats...");
str1 = str1.replace("dog", "cat");
System.out.println(str1);
That dog is a lovely dog.
Replacing all dogs with cats...
That cat is a lovely cat.

متد ()replace دو آرگومان قبول مي کند. اولين آرگومان رشته اي است که مي خواهيم آن را با يک رشته جديد جايگزين کنيم (رشته قديم) و ديگري رشته جديد است. متد ()replace تمام کلمات “dog” واقع در رشته را پيدا کرده و کلمه “cat” را جايگزين آنها مي کند. حال اگر بخواهید فقط اولین کلمه dog به وسیله کلمه cat جایگزین شود می توانید از متد ()replaceFirst استفاده کنید :

String str1 = "That dog is a lovely dog.";
System.out.println(str1);
System.out.println("Replacing all dogs with cats...");
str1 = str1.replaceFirst("dog", "cat");
System.out.println(str1);
That dog is a lovely dog.
Replacing all dogs with cats...
That cat is a lovely dog.

متد ()replaceAll هم یک سری کاراکتر به عنوان الگو می گیرد و در هر جای رشته که آنها را پیدا کند با رشته یا کاراکتری که خودمان می خواهیم جایگزین می کند. فرض کنید که در داخل رشته ای علائمی مانند +، – و * قرار دارند و می خواهیم آنها را حذف کنیم برای این کار به صورت زیر عمل می کنیم :

String str1 = "--+Hello +World!***";

String result = str1.replaceAll("[*+-]","");

System.out.println(result);
Hello World!

همانطور که در کد بالا مشاهده می کنیداین متد دو آرگومان می گیرد که اولین آرگومان کاراکترهایی هستند که آنها را در داخل جفت کروشه به صورت رشته قرار داده ایم و دومین آرگومان هم که “” (جفت کوتیشن بدون فاصله) می باشد که برای حذف کردن کارکترها به کار برده ایم.