String字符串切割数组 逗号 数字 数组

本文介绍了一种从请求字符串中解析并获取参数的方法,同时提供了校验参数合法性的策略。解析过程包括转换分隔符、去除重复项,并通过正则表达式检查参数格式是否符合预期,确保了数据处理的准确性和安全性。

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

    /**
     * 解析请求的字符串数组
     * @param packNo 请求的字符串    如:12,13,15,666
     * @return
     */
    private List<String> getRequestParam(String packNo) {

        List<String> list = new ArrayList<>();
        // 统一转换为英文分隔符数组
        String[] packNos = packNo.trim().replace(',', ',').split(",");
        for (String materialId : packNos) {
            list.add(materialId);
        }
        // 去除重复数据,控制分段查询的结果
        List<String> collect = list.stream().distinct().collect(Collectors.toList());
        return collect;
    }

    /**
     * 校验请求参数合法性
     * @param str 需要校验的字符串
     * @return
     */
    private boolean checkRequestParam(String str) {

        // 只能数字开头、不能逗号开头、中间支持多个逗号、最后支持多个逗号、不区分中英文逗号分隔。例:111,222,,55,,,
        // String regLoose = "(\\d)+(,|,|\\d+)*";
        // 只能数字开头、不能逗号开头、中间不支持多个逗号、最后不支持多个逗号(最后可以是逗号)、不区分中英文逗号分隔。例:111,222,
        String regRigorous = "(\\d+(\\,|\\,?))+";
        return Pattern.matches(regRigorous, str);
    }

    /**
     * 校验getTaskAndBoxInfo请求参数合法性
     * @param str 需要校验的字符串
     * @return
     */
    private boolean checkTaskRequestParam(String str) {

        // 只能字母或者数字开头,中间不能多个逗号,最后不能多个逗号。如:C999,B999,
        String regRigorous = "((\\d+|[a-zA-Z0-9]+)(\\,|\\,?))+";
        return Pattern.matches(regRigorous, str);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值