2011-10-04 7 views
5

StringBufferをループするときに新しい行の開始位置を取得する必要があります。 は私がStringBuffer内の改行の開始のインデックスを取得する

"This is a test 
Test 
Testing Testing" 

新ラインは、「テスト」、「テスト」と「テスト」の後に存在したStringBufferに、次の書類を持っていると言います。私は「\ nは」文字ではありませんので、それが動作しません知っている

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

} 

は、私のようなものが必要。何か案は? :)

おかげ

+10

「 '\ n」は文字です。 –

+2

capacity()がlength()と同じではないため、機能しません。ドキュメントをお読みください! – 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

私はそれが必要です。他の人はwhileループを持つことができ、indexOfが-1のときに終了します:) – Decrypter

+0

@Decrypter、beny23のforループが必要です。 – 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 
関連する問題