निम्न कोड जावा 8 & 9 दोनों में संकलित करता है, लेकिन अलग-अलग व्यवहार करता है।जावा 8 और जावा 9 के बीच नियमित अभिव्यक्तियों में R अलग-अलग व्यवहार क्यों करता है?
class Simple {
static String sample = "\nEn un lugar\r\nde la Mancha\nde cuyo nombre\r\nno quiero acordarme";
public static void main(String args[]){
String[] chunks = sample.split("\\R\\R");
for (String chunk: chunks) {
System.out.println("Chunk : "+chunk);
}
}
}
जब मैं यह जावा 8 के साथ चलाने के लिए यह रिटर्न:
Chunk :
En un lugar
de la Mancha
de cuyo nombre
no quiero acordarme
लेकिन जब मैं जावा 9 के साथ इसे चलाने के उत्पादन अलग है:
Chunk :
En un lugar
Chunk : de la Mancha
de cuyo nombre
Chunk : no quiero acordarme
क्यों?
ऐसा लगता है कि जावा 8 '\ R' लालची है, जबकि 9 में यह नहीं है। – doublep
आपको System.getProperty ("line.separator") से क्या स्ट्रिंग मिलती है? – dasblinkenlight
@dasblinkenlight: इससे कोई फर्क नहीं पड़ता; '\ R' है [लाइनबैक मैचर] (https://docs.oracle.com/javase/9/docs/api/java/util/regex/Pattern.html)। यह ओपी के पास जो कुछ भी होगा उससे मेल खाएगा। – Makoto