5

循环通过 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' 不是字符。有任何想法吗?:)

谢谢

4

3 回答 3

8

您可以这样简化循环:

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);
}
于 2011-10-04T14:35:06.000 回答
2
System.out.println("New line at " + stringBuffer.indexOf("\n"));

(不再需要循环)

于 2011-10-04T14:28:02.743 回答
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
于 2011-10-04T14:32:46.017 回答