迭代 Java 字符串行的最佳方法是什么?

2022-08-31 16:52:03

目前我正在使用类似的东西:

String[]lines = textContent.split(System.getProperty("line.separator"));
for(String tmpLine : lines){
   //do something
}

我对这种方法不是很满意,因为它创建了一个沉重的数组(假设可以包含一本书)。textContent

有没有更好的解决方案来迭代字符串的行?


答案 1

您可以使用 :

BufferedReader bufReader = new BufferedReader(new StringReader(textContent));

并使用方法:readLine()

String line=null;
while( (line=bufReader.readLine()) != null )
{

}

答案 2

要将 Java 8 方法添加到此问题中,请执行以下操作:

Arrays.stream(content.split("\\r?\\n")).forEach(line -> /*do something */)

诅咒,如果您确定文件来自与运行vm相同的平台,也可以使用它进行拆分。System.lineSeparator()

或者更好地使用流 API,甚至更符合过滤器,映射和收集:

String result = Arrays.stream(content.split(System.lineSeparator()))
                     .filter(/* filter for lines you are interested in*/)
                     .map(/*convert string*/)
                     .collect(Collectors.joining(";"));