您可以使用 StringTokenizer 作为起点:
String data = "Multi\n Line\r Text\n and now a two-char \r\nline separator";
StringTokenizer tokenizer = new StringTokenizer(data, "\n\r", true);
List<String> tokensAndDelimiters = new ArrayList<>();
while (tokenizer.hasMoreTokens()) {
tokensAndDelimiters.add(tokenizer.nextToken());
}
tokensAndDelimiters.replaceAll((token) -> token.replace("\n", "\\n").replace("\r", "\\r"));
System.out.println("tokensAndDelimiters = " + tokensAndDelimiters);
上述代码的输出是:
tokensAndDelimiters = [Multi, \n, Line, \r, Text, \n, and now a two-char , \r, \n, line separator]
第三个 StringTokenizer 构造函数参数指示将分隔符作为标记返回。我只是替换行分隔符,以便它们清楚地打印出来。需要注意的一点是,如果您有一个典型的 windows 行分隔符 ("\r\n"),这将作为两个标记出现,因为 StringTokenizer 只处理单个字符分隔符。