在指定的URL上添加参数并改变参数

本文介绍了一种实用的方法来处理URL中的参数,包括如何修改现有参数的值或添加新的参数键值对,同时还提供了从URL中根据键名获取值的功能。

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

作为工具类笔记整理:
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

/**
 * Title: 在指定的URL上添加参数并改变参数
 * 需求:
 * 改变url,给定一个paramName和paramValue,若paramName存在,
 * 则改变paramName对应的oldvalue,否则就添加一个paramName与paramValue的键值对
 * 前提是给定的参数,paramName和paramValue均不为空,为空直接返回原url
 * Description: TestDemo
 * @author: xg.chen
 * @date:2016年9月2日
 */
public class StringURL {
    /**
     * MethodsTitle:传入的URL中参数的处理
     * @author: xg.chen
     * @date:2016年9月2日 
     * @param url 传入的url ex:"http://exp.kunnr.com/so/index.html?kunnrId=16&openid=16#/app/home"
     * @param paramName 参数名
     * @param paramValue 参数值
     * @return
     */
    public static String inputURL(String url,String paramName,String paramValue){
        //参数和参数名为空的话就返回原来的URL
        if(StringUtils.isBlank(paramValue) || StringUtils.isBlank(paramName)){
            return url;
        }
        //先很据# ? 将URL拆分成一个String数组
        String a = "";
        String b = "";
        String c = "";

        String[] abcArray = url.split("[?]");
        a = abcArray[0];
        if (abcArray.length > 1) {
            String bc = abcArray[1];
            String[] bcArray = bc.split("#");
            b = bcArray[0];
            if (bcArray.length > 0) {
                c = bcArray[1];
            }
        }
        if (StringUtils.isBlank(b)) {
            return url;
        }

        // 用&拆p, p1=1&p2=2 ,{p1=1,p2=2}
        String[] bArray = b.split("&");
        String newb = "";
        boolean found = false;
        for (int i = 0; i < bArray.length; i++) {
            String bi = bArray[i];
            if (StringUtils.isBlank(bi))
                continue;
            String key = "";
            String value = "";

            String[] biArray = bi.split("="); // {p1,1}
            key = biArray[0];
            if (biArray.length > 1)
                value = biArray[1];

            if (key.equals(paramName)) {
                found = true;
                if (StringUtils.isNotBlank(paramValue)) {
                    newb = newb + "&" + key + "=" + paramValue;
                } else {
                    continue;
                }
            } else {
                newb = newb + "&" + key + "=" + value;
            }
        }
        // 如果没找到,加上
        if (!found && StringUtils.isNotBlank(paramValue)) {
            newb = newb + "&" + paramName + "=" + paramValue;
        }
        if (StringUtils.isNotBlank(newb))
            a = a + "?" + newb;
        if (StringUtils.isNotBlank(c))
            a = a + "#" + c;
        return a;
    }
    /**
     * MethodsTitle: 从url地址中根据key获取value
     * @author: xg.chen
     * @date:2016年9月2日 
     * @param url  "http://exp.kunnr.com/so/index.html?kunnrId=16&openid=16#/app/home"
     * @param paramName
     * @return
     */
    public static String getURLParamValue(String url, String paramName) {
        if(StringUtils.isBlank(paramName)){
            return null;
        }
        // ? #拆开,先把?拆开 a?b#c ->{a,b,c}
        String b = "";
        String[] abcArray = url.split("[?]");
        if (abcArray.length > 1) {
            String bc = abcArray[1];
            String[] bcArray = bc.split("#");
            b = bcArray[0];
        }
        if (StringUtils.isBlank(b)) {
            return null;
        }

        // 用&拆p, p1=1&p2=2 ,{p1=1,p2=2}
        String[] bArray = b.split("&");
        for (int i = 0; i < bArray.length; i++) {
            String bi = bArray[i];
            if (StringUtils.isBlank(bi))
                continue;
            String key = "";
            String value = "";
            String[] biArray = bi.split("="); // {p1,1}
            key = biArray[0];
            if (biArray.length > 1)
                value = biArray[1];
            if (key.equals(paramName)) {
                return value;
            } 
        }
        return null;
    }
    /**
     * MethodsTitle: 根据长度拆分字符串,返回一个List
     * @author: xg.chen
     * @date:2016年9月2日 
     * @param txt
     * @param len
     * @return
     */
    public static List<String> splitTxtByLen(String txt,int len){
        List<String> list=new ArrayList<String>();
        if(StringUtils.isBlank(txt))
            return list;
        if(len==0)
            return list;
        //txt="一二三四五六七八久十二二三四五六七八久十三二三四五六七八久十四二三四五六七八久十五二三四五六七八久十";
        String remain=txt;
        String put="";
        for (int i = 0; i < 1+(txt.length()/10); i++) {
            if(remain.length()<=len){
                list.add(remain);
                break;
            }
            put=txt.substring(i*len, (i+1)*len);
            remain=txt.substring((i+1)*len,txt.length());
            list.add(put);
        }
        return list;
    }
    //测试模块
    public static void main(String[] arg0){
        String txt="一二三四五六七八久十二二三四五六七八久十三二三四五六七八久十四二三四五六七八久十五二三四五六七八久十";
        int len=10;
        List<?> list = splitTxtByLen(txt, len);
        System.out.println(list);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值