2011-10-04 18 views
5

में एक नई लाइन की शुरुआत की अनुक्रमणिका प्राप्त करें मुझे स्ट्रिंगबफर के माध्यम से लूप करते समय नई लाइन की प्रारंभिक स्थिति प्राप्त करने की आवश्यकता है। , मैं एक StringBufferस्ट्रिंगबफर

"This is a test 
Test 
Testing Testing" 

नई लाइनों "परीक्षण" के बाद अस्तित्व में में निम्नलिखित दस्तावेज़ है कहो "टेस्ट" और "परीक्षण"।

मैं की तरह कुछ की जरूरत है:

for(int i =0;i < StringBuffer.capacity(); i++){ 
if(StringBuffer.chatAt(i) == '\n') 
    System.out.println("New line at " + i); 

} 

मुझे पता है क्योंकि '\ n' एक चरित्र नहीं है कि काम नहीं करेगा। कोई विचार? :)

धन्यवाद

+10

'' \ n'' एक चरित्र है। –

+2

यह काम नहीं करता है क्योंकि क्षमता() लंबाई() के समान नहीं है। कृपया दस्तावेज़ीकरण पढ़ें! – kan

उत्तर

6

आप कर सकते हैं अपने लूप को इस प्रकार सरल बनाएं:

StringBuffer str = new StringBuffer("This is a\ntest, this\n\nis a test\n"); 

for (int pos = str.indexOf("\n"); pos != -1; pos = str.indexOf("\n", pos + 1)) { 
    System.out.println("\\n at " + pos); 
} 
2
System.out.println("New line at " + stringBuffer.indexOf("\n")); 

(कोई लूप अब आवश्यक हो तो)

+0

वह सिर्फ पहले '' \ n'' की अनुक्रमणिका मुद्रित करेगा। दूसरों के बारे में क्या? –

+1

मुझे जो चाहिए वह है। दूसरों के लिए मेरे पास थोड़ी देर लूप हो सकती है और यह समाप्त हो जाएगा जब इंडेक्सऑफ -1 है :) – Decrypter

+0

@ डेक्रीप्टर, आपके पास बेनी 23 से लूप होना चाहिए, क्योंकि यह एक अच्छा विचार है। – rapadura

1

आपका कोड वाक्य-संशोधनों के एक जोड़े के साथ ठीक काम करता है:

public static void main(String[] args) { 
    final StringBuffer sb = new StringBuffer("This is a test\nTest\nTesting Testing"); 

    for (int i = 0; i < sb.length(); i++) { 
     if (sb.charAt(i) == '\n') 
      System.out.println("New line at " + i); 
    } 
} 

कंसोल आउटपुट:

New line at 14 
New line at 19