如何分割“以空格分割的字符串中间还有空格”的数据结构

该博客展示了如何处理包含内部空格的以空格分隔的字符串,通过正则表达式匹配和替换,将字符串转换为列表,并使用Map存储处理后的元素。在代码中,首先创建一个Pattern来匹配双引号内的内容,然后遍历找到的子串,用Map存储不带引号的版本。接着,将原始字符串的引号替换为空,再通过split()方法分割,并使用Stream处理列表,从Map中查找并替换原来的元素。最终输出了处理后的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 如何分割“以空格分割的字符串中间还有空格”的数据结构,话不多说,直接上代码。

/**
 * 5 1 "zhang san feng" 0.000 "hello world" "哪吒" 
 *  --> 
 *  [5, 1, "zhang san feng", 0.000, "hello world", "哪吒"]
 */
private static void test01() {
    String str = "5 1 \"zhang san feng\" 0.000 \"hello world\" \"哪吒\"";
    final Pattern p = Pattern.compile("\"(.*?)\"");
    Matcher m = p.matcher(str);
    List<String> list = new ArrayList<String>();
    Map<String, String> map = new HashMap<String, String>();
    while (m.find()) {
        list.add(m.group());
    }
    System.out.println(list);//["zhang san feng", "hello world", "哪吒"]

    for (String s : list) {
        str = str.replace(s, s.replace(" ", ""));
        map.put(s.replace(" ", ""), s);
    }

    System.out.println(str);//5 1 "zhangsanfeng" 0.000 "helloworld" "哪吒"

    List<String> valueList = Arrays.asList(str.split(" "));
    System.out.println(valueList);//[5, 1, "zhangsanfeng", 0.000, "helloworld", "哪吒"]
    List<String> collect = valueList.stream().map(x -> {
        if(map.containsKey(x)) {
            return map.get(x);
        }
        return x;
    }).collect(Collectors.toList());
    System.out.println(collect);//[5, 1, "zhang san feng", 0.000, "hello world", "哪吒"]
}

public static void main(String[] args) {
    test01();
}

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值