我有一个名为messages.txt的文件文本,如下所示:

6107586533  44335557075557777
4848675309  53366 6699044404666804448
6107584096  94466602777330999666887770223377778077778 883 336687777


第一列代表接收者的数量,第二列代表数字编码的消息(我将使用解码器方法对已经创建的第二列数字进行解码)。我使用以下方法读取文件文本:

public void readMessagesFromFile() throws Exception{
 BufferedReader in = new BufferedReader(new FileReader("messages.txt"));
 String str;

 List<String> list = new ArrayList<String>();
 while((str = in.readLine()) != null){
     list.add(str);
 }

 String[] stringArr = list.toArray(new String[3]);
 for (String x: stringArr) {
     System.out.print(x);
}
}


但是,它存储所有内容(应该如此),如下所示:

6107586533  443355570755577774848675309 53366 66990444046668044486107584096 94466602777330999666887770223377778077778 883 336687777


如何仅阅读和存储以下部分:

    44335557075557777
    53366 6699044404666804448
    94466602777330999666887770223377778077778 883 336687777


我想按行读取和存储,即第二列中的每一行都将分配给数组的每个索引),只想在存储第二列时排除第一列。

最佳答案

这将拆分行并保留第一个令牌之后的所有内容

 List<String> list = new ArrayList<String>();
 while((str = in.readLine()) != null){
     String[] temp = str.trim().split("\\s+",2);
     list.add(temp[1]);
 }


如果存在前导空格,则调用trim

至于将代码转换为数组,则不需要它,可以遍历列表。

 for (String s : list)
 {
     System.out.println(s);
 }

关于java - 读取文件文本的特定部分,然后将它们添加到数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35734504/

10-09 05:32