उदाहरण
public class Demo {
public static void expandRange(String word) {
StringBuilder mySb = new StringBuilder();
String[] strArr = word.split(", ");
for (int i = 0; i < strArr.length; i++) {
String[] splitStr = strArr[i].split("-");
if (splitStr.length == 2) {
int low = Integer.parseInt(splitStr[0]);
int high = Integer.parseInt(splitStr[splitStr.length - 1]);
while (low <= high) {
mySb.append(low + " ");
low++;
}
} else {
mySb.append(strArr[i] + " ");
}
}
System.out.println(mySb.toString().trim());
}
public static void main(String args[]) {
String myStr = "1-4, 56-57, 99-101, 0-1";
System.out.println("दिए गए नंबरों की विस्तारित रेंज है: ");
expandRange(myStr);
}
}
आउटपुट
दिए गए नंबरों की विस्तारित रेंज है 1 2 3 4 56 57 99 100 101 0 1
व्याख्या: Demo क्लास में 'expandRange' नामक एक फंक्शन होता है, जो कॉमा के आधार पर स्ट्रिंग को विभाजित करता है, और स्ट्रिंग के माध्यम से पुनरावृति करता है और संख्याओं को विभाजित करता है और हर बार 1 इन्क्रीमेंट करता है। यह कंसोल पर प्रदर्शित होता है। मुख्य फंक्शन में, स्ट्रिंग परिभाषित की जाती है, और इस फंक्शन को पैरामीटर के रूप में पास करके कॉल किया जाता है। प्रासंगिक संदेश कंसोल पर प्रदर्शित होता है।
इनपुट फॉर्मेट:
"start-end, start-end, ..." फॉर्मेट में रेंज, कॉमा और स्पेस से अलग किए गए।
सुधारित संस्करण (मजबूत पार्सिंग के साथ):
public static String expandRanges(String input) {
StringBuilder result = new StringBuilder();
String[] ranges = input.split("\\s*,\\s*"); // लचीला कॉमा विभाजन
for (String range : ranges) {
String[] bounds = range.split("\\s*-\\s*"); // लचीला हाइफन विभाजन
if (bounds.length == 2) {
try {
int start = Integer.parseInt(bounds[0].trim());
int end = Integer.parseInt(bounds[1].trim());
if (start <= end) {
for (int i = start; i <= end; i++) {
result.append(i).append(' ');
}
} else {
// उल्टी रेंज संभालें
for (int i = start; i >= end; i--) {
result.append(i).append(' ');
}
}
} catch (NumberFormatException e) {
result.append(range).append(' '); // अमान्य रेंज को जैसा है वैसा रखें
}
} else {
result.append(range).append(' ');
}
}
return result.toString().trim();
}
उपयोग केस:
- पेज रेंज पार्सिंग (प्रिंट डायलॉग्स)
- कॉन्फिगरेशन फाइल्स में रेंज नोटेशन
- टेस्ट केस जनरेशन
- डेटा प्रोसेसिंग पाइपलाइन्स
विविधताएं:
// स्टेप के साथ: "1-10:2" → 1,3,5,7,9
// एकाधिक रेंज: "1-3,5,7-9" → 1,2,3,5,7,8,9
// वर्ण रेंज: "a-d" → a,b,c,d