2011-10-04 3 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 
관련 문제