迭代 Java 字符串行的最佳方法是什么?
目前我正在使用类似的东西:
String[]lines = textContent.split(System.getProperty("line.separator"));
for(String tmpLine : lines){
//do something
}
我对这种方法不是很满意,因为它创建了一个沉重的数组(假设可以包含一本书)。textContent
有没有更好的解决方案来迭代字符串
的行?
目前我正在使用类似的东西:
String[]lines = textContent.split(System.getProperty("line.separator"));
for(String tmpLine : lines){
//do something
}
我对这种方法不是很满意,因为它创建了一个沉重的数组(假设可以包含一本书)。textContent
有没有更好的解决方案来迭代字符串
的行?
您可以使用 :
BufferedReader bufReader = new BufferedReader(new StringReader(textContent));
并使用方法:readLine()
String line=null;
while( (line=bufReader.readLine()) != null )
{
}
要将 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(";"));