2011-10-04 14 views
5

Ho bisogno di ottenere la posizione di partenza della nuova linea quando esegui il looping di uno StringBuffer. Dire che ho il seguente documento in uno StringBuffer esistonoOttieni l'indice dell'inizio di una nuova riga in un Stringbuffer

"This is a test 
Test 
Testing Testing" 

nuove righe dopo "test", "Test" e "Test".

Ho bisogno di qualcosa di simile:

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

} 

so che non funziona perche '\ n' non è un personaggio. Qualche idea? :)

Grazie

+10

''\ n'' è un carattere. –

+2

Non funziona perché capacity() non è uguale a length(). Si prega di leggere la documentazione! – kan

risposta

6

È possibile semplificare il ciclo come tale:

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")); 

(senza anello più necessario)

+0

Questo stamperà solo l'indice del primo ''\ n''. E gli altri? –

+1

Questo è quello che mi serve. Per gli altri potrei avere un ciclo while e terminerà quando indexOf è -1 :) – Decrypter

+0

@Decrypter, dovresti avere il ciclo for da beny23, è una buona idea. – rapadura

1

Il tuo codice funziona bene con un paio di modifiche sintattiche: uscita

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); 
    } 
} 

Console:

New line at 14 
New line at 19 
Problemi correlati