CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ سبسٽرنگ
John Squirrels
سطح
San Francisco

جاوا ۾ سبسٽرنگ

گروپ ۾ شايع ٿيل
جاوا ۾ اسٽرنگ تي سڀ کان وڌيڪ مشهور ڪارناما آهن ڪنٽينيشن، انڊيڪس ذريعي هڪ ڪردار حاصل ڪرڻ ۽ هڪ سبسٽرنگ حاصل ڪرڻ. هن آرٽيڪل ۾ اسان توهان کي جاوا سب اسٽرنگ جي طريقي بابت ٻڌائڻ وارا آهيون.

Java Substring ڇا آهي؟

Java Substring عام طور تي اسٽرنگ اندر اکرن جو هڪ متضاد سلسلو آهي. اهو ٿي سگهي ٿو String جو حصو يا سڄو اسٽرنگ پڻ. جاوا ۾ سبسٽرنگ - 2جاوا ۾ substring ڇا آهي؟ ھن ٻوليءَ ۾ ھڪڙو substring() طريقو آھي، يا ٻه طريقا، جاوا ميٿڊ اوور لوڊ ڪرڻ جي مھرباني. توھان انھن کي استعمال ڪري سگھوٿا جاوا پروگرام ۾ سبسٽرنگ حاصل ڪرڻ لاءِ. پھريون جاوا سب اسٽرينگ جو طريقو آھي String substring(firstIndex) ۽ ٻيو آھي String substring (firstIndex, lastIndex) .

جاوا ۾ substring ڪيئن استعمال ڪجي

جواب سادو آهي: صرف سبسٽنگ استعمال ڪريو. Java substring() طريقو اسٽرنگ جو ھڪڙو حصو موٽائي ٿو. هتي ٻه طريقا آهن جيڪي توهان هن لاء استعمال ڪري سگهو ٿا:
ذيلي اسٽرنگ جي نحو اسٽرنگ سبسٽرنگ (پهريون انڊيڪس) اسٽرنگ سبسٽرنگ (پهريون انڊيڪس، آخري انڊيڪس)
دليل firstIndex توهان جي اسٽرنگ ۾ هڪ نمبر آهي جيڪو توهان جي سبسٽرنگ جو پهريون انڊيڪس آهي. شموليت وارو. توهان جي سب اسٽرنگ جو آخري نمبر پوري اسٽرنگ جو آخري نمبر آهي firstIndex توهان جي اسٽرنگ ۾ هڪ نمبر آهي جيڪو توهان جي سبسٽرنگ جو پهريون انڊيڪس آهي. شموليت وارو.
lastIndex توھان جي اسٽرنگ جو تعداد آھي، پھريون ۽ سڀ کان پوءِ ان کي توھان جي سب اسٽرينگ مان خارج ڪيو ويو آھي
جاوا ۾ substring ڪيئن استعمال ڪجي جا مثال

String s = "CodeGym";
System.out.println(s.substring(4));
//returns Gym

String s = "CodeGym"; 
System.out.println(s.substring(2,5));
//returns deG
تمام مشهور ڪم جيڪي توهان کي سمجهڻ ۾ مدد ڪن ٿا
  • جاوا ۾ سبسٽرنگ ڪيئن حاصل ڪجي
  • ڏنل اسٽرنگ جا سڀ سب اسٽرنگ ڪيئن ڳولجن
  • سڀ کان ڊگھي عام سبسٽنگ ڪيئن ڳولھيو

جاوا ۾ سبسٽرنگ ڪيئن حاصل ڪجي (خاص)

هي پهريون جاوا سبسٽرنگ مثال تمام آسان آهي. توھان وٽ ھڪڙو اسٽرنگ آھي ۽ توھان کي ان ۾ ھڪڙي سبسٽنگ "ڪوڊ گيم" ڳولڻ جي ضرورت آھي. توھان اڳ ۾ ئي ڄاڻو ٿا ته جاوا ۾ سب اسٽرينگ ڪيئن حاصل ڪجي. تنهن ڪري هتي هن خاص مسئلي جو حل آهي:

import java.io.IOException;

public class Main {

   public static void main(String[] args) throws IOException {

       String s1 = "the best Java Core course is CourseCodeGym.  End of story";
       String myTarget = "CodeGym";
       int index1 = s1.indexOf(myTarget);
      
       int index2 = index1 + myTarget.length();
       System.out.println(s1.substring(index1, index2));

   }
}
ٻاھر آھي: CodeGym Process exit code سان ختم ٿي ويو 0 ڏنل اسٽرنگ جا سڀ سب اسٽرنگ ڪيئن ڳولجن ھتي اسان وٽ ڏنل اسٽرنگ جا سڀ سب اسٽرنگ ڳولڻ جو آسان طريقو آھي.

import java.io.IOException;
public class Main {
   public static void main(String[] args) throws IOException {
       String myTarget = "CodeGym";
       for (int i = 0; i < myTarget.length(); i++) {
           for (int j = i + 1; j <= myTarget.length(); j++) {
               System.out.println(myTarget.substring(i, j));
           }
       }    
   }
}
ٻاھر آھي: C Co Cod Code CodeG CodeGy CodeGym o od ode ode odeG odeGy odeGym d de deG deGy deGym e eG eGy eGym G Gy جم y ym m پروسيس ختم ٿي ويو ايگزٽ ڪوڊ سان 0 ڊگھي عام سبسٽرنگ کي ڪيئن ڳولجي ڪمپيوٽر سائنس ۾ سڀ کان وڌيڪ مشهور ڪمن مان هڪ آهي. توھان ان کي پنھنجي جونيئر ڊولپر جي انٽرويو تي تمام گھڻو امڪان سان ملن ٿا. بهرحال، ان کي حل ڪرڻ جي ڪوشش ڪريو، اهو هڪ ابتدائي پروگرامر لاء هڪ تمام مفيد مشق آهي. سڀ کان ڊگھي عام سب اسٽرنگ جي مسئلي جو مطلب آھي ڊگھي ڊگھي اسٽرنگ (يا انھن مان ڪجھ) کي ڳولھيو جيڪو ٻن يا وڌيڪ اسٽرنگز جو سب اسٽرنگ (يا سب اسٽرنگ آھن) آھي. مثال طور توهان وٽ ٻه تار آهن

String first = "CodeGym" 
String second = "SomeGym"
آئوٽ پٽ هجڻ گهرجي: eGym تنهن ڪري، توهان کي "پهريون" ۽ "ٻيو" اسٽرنگ ڪرڻو پوندو. سڀ کان ڊگھو عام سبسٽرنگ پرنٽ ڪريو. جيڪڏهن ٻه يا وڌيڪ ذيلي اسٽرنگ تمام ڊگھي عام سبسٽرنگ لاءِ ساڳي قدر آهن، انهن مان ڪنهن کي پرنٽ ڪريو. اسان توهان کي سختي سان صلاح ڏيو ٿا ته هن مسئلي کي پاڻ سان حل ڪرڻ جي ڪوشش ڪريو ۽ صرف ان کان پوء هيٺ ڏنل ڪوڊ کي ڏسو.

public class SubStringTest {

   //  in this method we are looking for the Longest common substring of
   // first String with length = m  and the second String with length = n
   public static String longestCS(String first, String second, int m, int n) {
       // the maximal length
       int maxLength = 0;
       // the last index of the longest common substring
       int endIndex = m;

       // array stores the length of substring
       int[][] keeper = new int[m + 1][n + 1];

       for (int i = 1; i <= m; i++) {
           for (int j = 1; j <= n; j++) {
               // check if current characters of first and second strings match
               if (first.charAt(i - 1) == second.charAt(j - 1)) {
                   keeper[i][j] = keeper[i - 1][j - 1] + 1;
                  
                   if (keeper[i][j] > maxLength) {
                       maxLength = keeper[i][j];
                       endIndex = i;
                   }
               }
           }
       }
       return first.substring(endIndex - maxLength, endIndex);
   }


   public static void main(String[] args) {
       String first = "CodeGym";
       String second = "SomeGym";
       int m = first.length(), n = second.length();
       System.out.println("The longest common substring = " + longestCS(first, second, m, n));
   }
}
ٻاھر آھي: ڊگھي عام سب اسٽرينگ = eGym

جاوا ۾ سب اسٽرنگ ڪيئن ڪم ڪندو آهي

JDK 7 ۽ نون ورزن ۾، substring() هاڻي ڪردارن جي تعداد کي ڳڻڻ نه ڏيندو آهي ڪردارن جي صف ۾ جيڪو اهو ٺاهي ٿو، جيئن اهو JDK 6 کان اڳ وارن نسخن ۾ شامل آهي، پر صرف ميموري ۾ هڪ نئين صف ٺاهي ٿو (هيپ) ۽ ان ڏانهن اشارو ڪري ٿو. . هتي هڪ مثال آهي:

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
تنهن ڪري، JDK 7 ۽ بعد ۾، اعتراض x تي لاڳو ڪيل substring() طريقي جي نتيجي ۾ ٺاهيل شيون y ۽ z ٻن نئين ٺاهيل صفن ڏانهن اشارو ڪندا (هيپ تي) - {d,e, G, y} y لاءِ ۽ {سي، او} لاءِ z . JDK 7 + ورزن جي طريقي جي سبسٽرنگ ۾، اهي ٻه نيون لائينون (يعني ٻه نوان اکر آري) اصل اسٽرنگ myLongString ({C, o, d, e, G, y, m, i, s, t, h, e, b,e, s, t} هڪ صف جي صورت ۾) .

JDK 6 ورزن جو سبسٽرنگ

اڄ به ڪجھ وڏن منصوبن تي توھان ملن ٿا ميراثي ڪوڊ جو بنياد JDK کان 6 ڀيرا. JDK 6 طريقي ۾ substring() مختلف طريقي سان ڪم ڪري ٿو. جيئن توهان کي خبر آهي ته، String هڪ ناقابل بدلجندڙ ڪلاس آهي ۽ سب اسٽرنگ حاصل ڪرڻ لاءِ جاوا استعمال ڪيو هي غير تبديليءَ اڳ ۾ JDK 6 ۾. قسم جو Object of String اندر صرف اکرن جي هڪ صف آهي، يا بلڪه، اکرن جي هڪ صف تي مشتمل آهي. JDK 6 جي وقت تي، اتي ٻه وڌيڪ متغير محفوظ ڪيا ويا: ڪردار جي صف ۾ پهرين ڪردار جو تعداد ۽ انهن جي مقدار. اهڙيء طرح، JDK 6 ۾، اسٽرنگ ۾ ٽي فيلڊ هئا چار قدر [] (ڪردار سري)، int offset (ايري ۾ پهرين ڪردار جي انڊيڪس)، ۽ int شمار (سري ۾ ڪردارن جو تعداد). جڏهن JDK 6 ۾ هڪ ذيلي اسٽرنگ ٺاهي وئي آهي، ڪردارن جي صف کي نئين اسٽرنگ اعتراض ۾ نقل نه ڪيو ويو آهي. ان جي بدران، ٻئي شيون هڪ ئي ڪردار جي صفن جي حوالي سان ذخيرو ڪن ٿا. جڏهن ته ٻيو آبجیکٹ ٻن وڌيڪ متغيرن کي محفوظ ڪري ٿو، پهرين سبسٽرنگ جي علامت ۽ ٻيو ان بابت آهي ته سب اسٽرينگ ۾ ڪيتريون علامتون آهن. JDK 6 جو طريقو ميموري ليکڪ جي مسئلي جي ڪري متبادل ڪيو ويو. هن جو ڇا مطلب آهي؟ اچو ته فرض ڪريون ته اسان وٽ هڪ اسٽرنگ آهي x، ۽ اسان substring استعمال ڪندي ڪجهه سبسٽرنگ ٺاهيندا آهيون.

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
ھاڻي اسان وٽ ھڪڙو اعتراض x ياداشت جي ھڪڙي خاص حصي ۾ ذخيرو ٿيل آھي جنھن کي heap سڏيو ويندو آھي، ۽ ٻه شيون y ۽ z ساڳيا اعتراض x ڏانهن اشارو ڪندا آھن . صرف x جو حوالو ڏئي ٿو عنصرن کي ٻئي کان ڇهين تائين، ۽ z جو حوالو ڏئي ٿو x عنصرن کي صفر کان ٽئين تائين. ڇا جيڪڏهن اصل اعتراض x اڳ ۾ ئي استعمال ڪيو ويو آهي ۽ ان تي ڪنهن به حوالن کان سواء ڇڏي ويو آهي؟ پروگرام ۾ ٻيون سڀ شيون صرف y ۽ z سان ڪم ڪن ٿيون. انهي حالت ۾ گندي ڪليڪٽر شايد ايڪس کي تباهه ڪري سگهي ٿو، جڏهن ته ميموري صف رهي ٿي، ۽ اهو استعمال ڪيو ويندو آهي y ۽ z. ميموري ليڪ ٿئي ٿي. تنهن ڪري، نئون، JDK 7 ۽ بعد ۾ ورزن، طريقو استعمال ڪرڻ جي يادگيري جي لحاظ کان تمام قيمتي آهي. بهرحال اهو توهان کي ميموري ليڪ کي روڪڻ جي اجازت ڏئي ٿو. ان کان سواء، نئون طريقو تيزيء سان ڪم ڪري ٿو، ڇاڪاڻ ته ان کي اکرن جي تعداد کي ڳڻڻ جي ضرورت ناهي. جيڪو توهان سکيو ان کي مضبوط ڪرڻ لاءِ، اسان توهان کي اسان جي جاوا ڪورس مان هڪ وڊيو سبق ڏسڻ جي صلاح ڏيون ٿا
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION