繁体   English   中英

如何用逗号分割字符串,但从第二个逗号

[英]How to split a String by a comma, but from the second comma

我有一个字符串:

"model=iPhone12,3,os_version=13.6.1,os_update_exist=1,status=1"

我怎样才能将其转换为:

model=iPhone12,3
os_version=13.6.1
os_update_exist=1
status=1

从第一个逗号拆分字符串,然后重新连接结果字符串数组的前两个元素。

我怀疑是否有一种“干净”的方法可以做到这一点,但这适用于您的情况:

String str = "model=iPhone12,3,os_version=13.6.1,os_update_exist=1,status=1";

String[] sp = str.split(",");

sp[0] += "," + sp[1];
sp[1] = sp[2];
sp[2] = sp[3];
sp[3] = sp[4];
sp[4] = "";

你可以试试这个:

 public String[] splitString(String source) {

        // Split the source string based on a comma followed by letters and numbers.
        // Basically "model=iPhone12,3,os_version=13.6.1,os_update_exist=1,status=1" will be split
        // like this:
        // model=iPhone12,3
        // ,os_version=13.6.1
        // ,os_update_exist=1
        // ,status=1"
        String[] result = source.split("(?=,[a-z]+\\d*)");

        for (int i = 0; i < result.length; i++) {
            // Removes the comma at the beginning of the string if present
            if (result[i].matches(",.*")) {
                result[i] = result[i].substring(1);
            }
        }

        return result;
    }
    

如果您总是解析相同类型的字符串,那么像这样的正则表达式就可以完成这项工作

String str = "model=iPhone12,3,os_version=13.6.1,os_update_exist=1,status=1";
    Matcher m = Pattern.compile("model=(.*),os_version=(.*),os_update_exist=(.*),status=(.*)").matcher(str);
    if (m.find()) {
        model = m.group(1)); // iPhone12,3
        os = m.group(2)); // 13.6.1
        update = m.group(3)); // 1
        status = m.group(4)); // 1
    }

如果您真的想使用拆分,您仍然可以使用这种技巧

String[] split = str.replaceAll(".*?=(.*?)(,[a-z]|$)", "$1#")
    .split("#");
split[0] // iPhone12,3
split[1] // 13.6.1
split[2] // 1
split[3] // 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM