getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz
getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st
getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23
java 如何用其他字符替换cufajc= 和后面第一个&之间的字符即st,当然st是可变的 ,但如果他在最后就没有&了

解决方案 »

  1.   

        /**
         * 
         * @param src
         * @param key 不包含=
         * @return
         */
        public static String replace(String src, String key) {
         int index = src.indexOf(key);
         // 从=号后面的字符开始查找
         int endIndex = index + key.length() + 1;
    int nextIndex = src.indexOf("&", endIndex);
        
         return src.substring(0, endIndex) + (nextIndex > -1 ? src.substring(nextIndex) : "");
        }
    测试代码:
            String key ="cufajc";
            String s = "getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz";
            System.out.println(replace(s, key));
            s = "getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st";
            System.out.println(replace(s, key));
            s = "getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23";
            System.out.println(replace(s, key));
      

  2.   

    必须是正则表达式,模式匹配:xxx.match("cufajc.*?&");(懒惰匹配,也叫“非贪婪匹配”)
      

  3.   


    public static void main(String[] args) {
    Map<String,String> parameters=new LinkedHashMap<String,String>();
    parameters.put("quid", "1");
    parameters.put("cufajc", "2");
    parameters.put("mudijc", "3");
    String str="getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz&kkmudijc=cz";
    String result=resetParameters(parameters, str);
    System.out.println(str);
    System.out.println(result);
    }
    /**
     * 重置查询条件
     * @param parameters
     * @param targetStr
     * @return
     */
    public static String resetParameters(Map<String,String> parameters,String targetStr){
    Set<String> keys=parameters.keySet();
    String regex=null;
    for(String key:keys){
    regex="\\b"+key+"=[^&]+";
    targetStr=targetStr.replaceAll(regex, key+"="+parameters.get(key));
    }
    return targetStr;
    }
      

  4.   


    那这样我要用一个变量替换怎么办?例如我用String cf=“bj";我要得到的结果是"getQuYu/getQu.action?cufajc=bj&mudijc=cz&quid=23";
    我应该从哪传入cf
      

  5.   

    我写的那个方法不是你想要的吗?
    不好意思我水平有限,应该是我不懂用,
    就是说我要用一个变量例如String cf=“bj";去替换cufajc= 和后面第一个&之间的字符串,应该怎么传入cf这个变量。
    叩谢!!!
      

  6.   

    我写的那个方法不是你想要的吗?
    不好意思我水平有限,应该是我不懂用,
    就是说我要用一个变量例如String cf=“bj";去替换cufajc= 和后面第一个&之间的字符串,应该怎么传入cf这个变量。
    叩谢!!!
    方法不理解没关系,我不是给你调用的例子了吗?如果那样还看不懂,那我也无能为力了
      

  7.   

        /**
         * 
         * @param src
         * @param key 不包含=
         * @param replaceStr 替换后的字符串
         * @return
         */
        public static String replace(String src, String key, String replaceStr) {
         int index = src.indexOf(key);
         // 从=号后面的字符开始查找
         int endIndex = index + key.length() + 1;
    int nextIndex = src.indexOf("&", endIndex);
        
         return src.substring(0, endIndex) + replaceStr + (nextIndex > -1 ? src.substring(nextIndex) : "");
        }哈哈,测试代码就你自己加个参数了