我想拆分字符串而不创建两个字符串

时间:2018-12-26 12:32:41

标签: java regex split

我想在不创建字符串数组的情况下拆分String。下面是代码

String output = "abc 0 0 222.1.2.3:12345 1.1.3.5:20000 55555";
        JSONArray listeningIpsArray = new JSONArray();
        if (StringUtils.isNotEmpty(output)) {
            String[] lines = output.split("\n");
            for (String line : lines) {
                if (StringUtils.isNotBlank(line)) {
                    String[] port = output.split("\\:");
                    for (String l : port) {
                        listeningIpsArray.put(l.trim());
                    }
                }
            }
            // String a[] =output.split("\\:");
            System.out.println("String" + listeningIpsArray);
        }
    }

当我运行这段代码时,我得到如下输出。正在创建由3个String元素组成的数组

String["abc 0 0 222.1.2.3","12345 1.1.3.5","20000 55555"]

但是我只需要输出一个字符串,如下所示。

String["abc 0 0 222.1.2.3 12345 1.1.3.5 20000 55555"]

IP和端口之间的空间。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

出于您的目的,您必须使用replace而不是split方法:

String output = "abc 0 0 222.1.2.3:12345 1.1.3.5:20000 55555";
JSONArray listeningIpsArray = new JSONArray();
if (StringUtils.isNotEmpty(output)) {
    String[] lines = output.split("\n");
    for (String line : lines) {
        if (StringUtils.isNotBlank(line)) {
            listeningIpsArray.put(l.trim().replace(":"," "));
        }
    }
    System.out.println("String" + listeningIpsArray);
}

答案 1 :(得分:0)

如果此String output = "abc 0 0 222.1.2.3:12345 1.1.3.5:20000 55555";是您的输入,并且您想将"abc 0 0 222.1.2.3 12345 1.1.3.5 20000 55555"作为输出,那么您要做的就是使用output.replace(":", " "),即只需用空格替换所有冒号即可。希望这会有所帮助。