将字符串拆分为数组然后再次拆分数组

时间:2017-11-17 10:00:21

标签: java arrays string loops

我有这个字符串:

   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个相同的数组,其中包含您可以在上面第二个代码块中看到的示例。

3 个答案:

答案 0 :(得分:2)

您可以使用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());
}

答案 1 :(得分:0)

您可以使用REGEX实现您所需要的功能,只需将您使用字符串拆分方法分隔的所有内容分开。

我在本地尝试了以下代码,它与您正在寻找的内容完全相同。

public class StackSol1 {

    public static void main(String[] args) {



        String str = "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";
        String delimiters = "\\s+|,\\s*|\\:\\s*";

        // analyzing the string
        String[] tokensVal = str.split(delimiters);

        // prints the number of tokens
        System.out.println("Count of tokens = " + tokensVal.length);

        String finalStr="";

        for (String token : tokensVal) {

            finalStr = finalStr+"\n"+token;
        }

        System.out.println(finalStr);
    }

}

答案 2 :(得分:0)

如何使用正则表达式拆分? e.g。

String aa = "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";
String [] a = aa.split("[,:]");