如何从List<String>
的行中获得String
?我想将CRLF
(\r\n
)和LF
(\n
)作为EOL处理。空行(包括那些尾随行)需要保留,以便我可以使用String.join("\n", ...)
取回原始String
(但是,我不介意CRLF
成为LF
}}为s)。
这就是我想出来的:
String x = "\r\n\r\na\nb\r\nc\n\r\n\n";
List<String> lines = Arrays.asList(org.apache.commons.lang3.StringUtils.splitPreserveAllTokens(x.replace("\r", ""), "\n"));
答案 0 :(得分:3)
使用StringReader和Stream:
String x = "\r\n\r\na\nb\r\nc\n\r\n\n";
List<String> list = new BufferedReader(new StringReader(x))
.lines()
.collect(Collectors.toList());
答案 1 :(得分:2)
您可以尝试使用
String[] result = yourString.split("\r?\n", -1);
-1
参数为limit
,其负值表示不应从结果String[]
数组中删除尾随空字符串(我假设将此数组转换为List<String>
对你来说不是大问题。)
答案 2 :(得分:1)
如果您不想使用String.split
所需的正则表达式,则可以使用readLine
的{{1}}方法。摘录其文档:
读取一行文字。一条线被认为是由换行符('\ n'),回车符('\ r')或回车符后面的任何一个终止。
请注意,它也会单独拆分为“\ r \ n”。
所以你基本上会做以下事情:
BufferedReader
注意,使用Java 8更容易:
String x = ...
BufferedReader reader = new BufferedReader(new StringReader(x));
List<String> lines = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
答案 3 :(得分:0)
试试这个:
bundle exec rake routes