如何根据值的动态条目拆分字符串数组?

时间:2013-12-14 19:31:34

标签: java arrays string split

我正在尝试拆分现在存储在String [] args

中的字符串数组(从控制台获取的输入)

host 9 7 1 router 5 8 11 lan 1 5 2 9

现在args接收值并将它们存储为

args[0] = "host", args[1] = "9", args[2] = "7"等等。

字符串“host”,“router”和“lan”之后的值是动态生成的,即值的值不能改变

例如,另一个实例可以是

host 0 4 3 9 router 4 9 2 lan 1 3 4 7

对于上面提到的例子,我想创建一个

String[] hosts将存储0,4,3,9
存储String[] routers的{​​{1}} 4,9,2将存储String[] lans

我该怎么做?

1 个答案:

答案 0 :(得分:1)

public static void main(String[] args) {

    String in = "host 0 4 3 9 router 4 9 2 lan 1 3 4 7";

    List<String> storage = Arrays.asList(in.split(" "));

    boolean isHost = false;
    boolean isRouter = false;
    boolean isLan = false;

    List<String> hostList = new ArrayList<String>();
    List<String> routerList = new ArrayList<String>();
    List<String> lanList = new ArrayList<String>();

    for(String val : storage){
        if("host".equals(val)){
            isHost = true;
            continue;
        }
        else if("router".equals(val)){
            isRouter = true;
            isHost = false; 
            continue;
        }
        else if("lan".equals(val)){
            isHost = false;
            isRouter = false;
            isLan = true;
            continue;
            }

        if(isHost){             
            hostList.add(val);
        }
        else if(isRouter){              
            routerList.add(val);
        }
        else if(isLan){             
            lanList.add(val);
        }
    }

    System.out.print("Host: "); System.out.println(hostList);
    System.out.print("Router: "); System.out.println(routerList);
    System.out.print("Lan: "); System.out.println(lanList);

}

输出:

Host: [9, 7, 1]
Router: [5, 8, 11]
Lan: [1, 5, 2, 9]