Java技术问题:如何按Unix换行符拆分文件内容并整理为指定格式
解决换行分隔字符串的重组问题
看起来你已经走对了拆分的第一步,但还需要后续的处理来得到你想要的结果。让我们一步步来解决:
问题分析
你的原始输入是用\n分隔的多条记录,目标是移除第一条记录,然后把剩下的记录用空格连接起来。你用split("\\n")拆分是没问题的,但缺少了跳过第一条元素并拼接的步骤。
解决方案代码
假设你已经从文件中读取到了完整的字符串input,可以这样处理:
import java.util.Arrays; public class StringReformat { public static void main(String[] args) { // 模拟从文件读取的原始字符串 String input = "u,9,1,bid\nu,11,5,ask\nq,best_bid\nu,10,2,bid\nq,best_bid\no,sell,1\nq,size,10\nu,9,0,bid\nu,11,0,ask\n"; // 按换行符拆分字符串 String[] splitParts = input.split("\\n"); // 跳过第一个元素,将剩余元素用空格连接 String result = String.join(" ", Arrays.copyOfRange(splitParts, 1, splitParts.length)); // 输出结果 System.out.println(result); } }
代码解释
- 拆分字符串:
split("\\n")会把输入按换行符拆分成字符串数组,默认情况下会忽略末尾的空字符串(因为你的输入结尾是\n,但split不会把这个空元素包含进去)。 - 跳过第一条记录:
Arrays.copyOfRange(splitParts, 1, splitParts.length)会创建一个从索引1到末尾的新数组,刚好跳过了第一条u,9,1,bid。 - 拼接成目标格式:
String.join(" ", ...)会把数组中的每个元素用空格连接起来,得到你想要的结果。
处理特殊情况(可选)
如果你的输入可能包含空行(比如多个连续换行),可以先过滤掉空字符串再拼接:
import java.util.Arrays; import java.util.stream.Collectors; public class StringReformat { public static void main(String[] args) { String input = "u,9,1,bid\nu,11,5,ask\nq,best_bid\nu,10,2,bid\nq,best_bid\no,sell,1\nq,size,10\nu,9,0,bid\nu,11,0,ask\n"; String result = Arrays.stream(input.split("\\n")) .skip(1) // 跳过第一条 .filter(str -> !str.isBlank()) // 过滤空字符串 .collect(Collectors.joining(" ")); System.out.println(result); } }
这样即使输入中有空行,最终结果也不会出现多余的空格。
内容的提问来源于stack exchange,提问作者Beluy XL
相关产品推荐
相关产品推荐

