Получить индекс начала новой строки в Stringbuffer - PullRequest
5 голосов
/ 04 октября 2011

Мне нужно получить начальную позицию новой строки при цикле через StringBuffer. Скажем, у меня есть следующий документ в буфере строк

"This is a test
Test
Testing Testing"

Новые строки существуют после «test», «Test» и «Testing».

Мне нужно что-то вроде:

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

}

Я знаю, что это не сработает, потому что '\ n' не персонаж. Есть идеи? :)

Спасибо

Ответы [ 3 ]

6 голосов
/ 04 октября 2011

Вы можете упростить свой цикл как таковой:

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 голосов
/ 04 октября 2011
System.out.println("New line at " + stringBuffer.indexOf("\n"));

(цикл больше не требуется)

1 голос
/ 04 октября 2011

Ваш код отлично работает с парой синтаксических модификаций:

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
...