我有这个字符串:

   fname lname, GTA V: 120 : 00000, Minecraft : 20 : 10, Assassin’s Creed IV : 90 : 800, Payday 2 : 190 : 2001 ,Wolfenstein TNO : 25 : 80, FarCry 4 : 55 : 862


我想使用循环将此字符串拆分为逗号[,]示例中的数组:

[0]fname lname
[1]GTA V: 120 : 00000
[2]Minecraft : 20 : 10
[3]Assassin’s Creed IV : 90 : 800
[4]Payday 2 : 190 : 2001
[5]Wolfenstein TNO : 25 : 80
[6]FarCry 4 : 55 : 862


然后,我想使用另一个循环将其进一步拆分为:进入另一个数组示例

[0]fname lname
[1]GTA V
[2]120
[3]00000
[4]Minecraft
[5]20
[6]10
....


有更好的方法吗?

目前我有:

    List<String> lines = new ArrayList<String>();
    while (scan.hasNextLine())
    {
      lines.add(scan.nextLine());
    }

    //converts the list array to string array

    String[] scanarray = lines.toArray(new String[0]);

    //converts the string array into one large string

    String str_array = Arrays.toString(scanarray);

    String[] arraysplit;


    arraysplit = str_array.split("\\s*:\\s*");

    for (int i=0; i<arraysplit.length; i++)
    {
        arraysplit[i] = arraysplit[i].trim();
        //              ^^^^^^^^^^^^ has values with spaces
        System.out.println(scanarray[i]);
    }


编辑:

当前,我的程序创建了3个相同的数组,其中包含您可以在上面的第二个代码块中看到的示例。

最佳答案

您可以将String类的split方法与多个定界符一起使用

public static void main(String[] args) {
    String myOriginalString = "   fname lname, GTA V: 120 : 00000, Minecraft : 20 : 10, Assassin’s Creed IV : 90 : 800, Payday 2 : 190 : 2001 ,Wolfenstein TNO : 25 : 80, FarCry 4 : 55 : 862";
    // | is the regex OR operator
    String[] splited = myOriginalString.split(",|:");
    for(String s : splited)
    System.out.println(s.trim());
}

07-24 09:49
查看更多