m.group(1) की सामग्री में नियमित अभिव्यक्तियों (regex) का उपयोग करके JSON/URL से निकाले गए URL की एक सूची है, और मुझे उन्हें एक ArrayList में स्थानांतरित करने की आवश्यकता है।

मैं यहां पर सभी पंक्तियों का प्रिंट आउट ले सकता हूं

System.out.println(googleCs.get(0));

हालांकि, निम्नलिखित मुझे Index 1 out of bounds for length 1 error देता है

System.out.println(googleCs.get(1));

मैंने स्ट्रिंग और सरणी का उपयोग करके और "\n" (नई लाइन) पर निम्नानुसार विभाजित करने की कोशिश की:

String myStringGoogle = m.group(1);
String[] b = myStringGoogle.split("\n");

हालाँकि मुझे ठीक उसी मुद्दे का सामना करना पड़ता है

private static void matchPattern(
    String inputLine, Pattern pattern, BufferedWriter bw
) throws IOException {
    Matcher m = pattern.matcher(inputLine);

    while (m.find()) {
        ArrayList<String> googleCs = new ArrayList<String>();
        googleCs.add(m.group(1));
        System.out.println(googleCs.get(0));
    } 
}
1
Aran Ariel 5 सितंबर 2019, 07:56

2 जवाब

अपने लूप से पहले googleCs की घोषणा और आरंभीकरण को स्थानांतरित करें - जैसा कि आप अपने लूप के प्रत्येक पुनरावृत्ति के साथ List को फेंक देते हैं। List (और प्रोग्राम को List इंटरफ़ेस में पॉप्युलेट करें, न कि ArrayList ठोस प्रकार)। लूप के बाद प्रिंट करें। पसंद,

private static void matchPattern(String inputLine, Pattern pattern, BufferedWriter bw)
            throws IOException 
{
    Matcher m = pattern.matcher(inputLine);
    List<String> googleCs = new ArrayList<>();
    while (m.find()) {
        googleCs.add(m.group(1));
    }
    System.out.println(googleCs);
}
1
Elliott Frisch 5 सितंबर 2019, 08:06
हाय इलियट, यह काम नहीं किया है। क्या आपके पास कोई अतिरिक्त सुझाव हैं? शायद इस मुद्दे को JSON प्रारूप के साथ करना है जिससे मैंने डेटा निकाला है?
 – 
Eran Ariel
5 सितंबर 2019, 08:54
कृपया "काम नहीं किया" पर विस्तृत करें; अगर "System.out.println(googleCs.get(0));" आपको सारे रिकॉर्ड दे रहा था तो यह भी होना चाहिए।
 – 
Elliott Frisch
5 सितंबर 2019, 09:07
इलियट, मैंने ठीक वही परिणाम हासिल किया है। इंटेलिज टर्मिनल में परिणाम प्रिंट आउट ठीक है, और अगर मैं एक txt फ़ाइल को लिखता हूं, तो जानकारी एक स्ट्रिंग के रूप में सहेजी जाती है। m.group(1) में डेटा एक JSON से रेगुलर एक्सप्रेशन का उपयोग करके निकाला गया था
 – 
Eran Ariel
6 सितंबर 2019, 00:30
अपना कोड पोस्ट करें जो एक txt फ़ाइल में लिखता है; यदि आप टर्मिनल में डेटा देखते हैं तो यह कोड काम कर रहा है।
 – 
Elliott Frisch
6 सितंबर 2019, 05:49

मैंने स्ट्रिंग और सरणी का उपयोग करके करने की कोशिश की और "\ n" (नई लाइन) पर निम्नानुसार विभाजित किया:

स्ट्रिंग myStringGoogle = m.group(1); स्ट्रिंग [] बी = myStringGoogle.split ("\ n");

myStringGoogle.split("\\n"); करने की कोशिश कर रहा है

0
Desmond Vehar 6 सितंबर 2019, 10:48