Java 获取Stringbuffer中换行符开头的索引

Java 获取Stringbuffer中换行符开头的索引,java,stringbuffer,Java,Stringbuffer,当循环通过StringBuffer时,我需要得到新行的起始位置。 假设我在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

当循环通过StringBuffer时,我需要得到新行的起始位置。 假设我在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);

}
for(int i=0;i
我知道这不起作用,因为“\n”不是字符。有什么想法吗?:)

谢谢


(不再需要循环)

您的代码经过一些语法修改后运行良好:

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

您可以简化循环,如下所示:

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

“\n”
是一个字符。它不起作用,因为容量()与长度()不同。请阅读文档!这将只打印第一个
'\n'
的索引。其他的呢?那就是我需要的。对于其他人,我可以有一个while循环,当indexOf为-1:)@Decrypter时它将结束,你应该有beny23的For循环,因为这是一个好主意。对while循环做了类似的操作。
New line at 14
New line at 19
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);
}