2017-01-22 31 views
0

我试图找出如何使用分隔符来从一个文本文件源开始一个新对象的构造。如何使用多个分隔符把对象到数组

,我现在用的是TXT数据的例子:

“1 |弗雷德|鱼| [email protected] | Ithroeann:2 |劳瑞|纳什| [email protected] | Mazzzap: “

这是我迄今为止创建数组中的第一个对象,但我想知道如何使用”:“作为第二个分隔符来构建第二个对象。 我正在考虑使用一个循环来自动完成这个过程。

public class PlayerReader { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(new File("commandline.txt")); 
     input.useDelimiter("|"); 
     Player[] players = new Player[0]; 
     while (input.hasNext()) { 
      String id = input.next(); 
      String firstName = input.next(); 
      String lastName = input.next(); 
      String emailAddress = input.next(); 
      String gamerTag = input.next(); 
      Player newPlayer = new Player(id, firstName, lastName, emailAddress, gamerTag); 
      players = addPlayer(players, newPlayer); 
     } 
    } 
} 
+0

'字符串#split'始终是一个很好的朋友。你可以在'gamerTag'和'split(“:”)''上使用它。 –

+0

Sooo ...究竟是什么问题?代码不工作?也:我会强烈建议您关掉用于可变长度的输入阵列(使用'Set'或'List'代替) –

回答

0

我想你问的是如何处理这个事实,即你的文件有两个分隔符 - > |分隔字段和:分离包含字段的对象。

它应该是简单的。尝试以下操作:

阅读字符串整个文件的内容。

String content = new String(Files.readAllBytes(Paths.get("commandline.txt")));

单独由分隔的对象:

String[] objects = content.split(":");

创建对象的新的空列表 - 玩家:

List<Player> players = new ArrayList<Player>();

转换每个对象为玩家通过使用您的业务映射并添加每个玩家的ob用于上面的列表。

for (String object : objects) { 
    String[] fields = object.split("|"); 
    player.add(new Player(fields[0], fields[1], ...); 
} 
相关问题