gpt4 book ai didi

java - 我想要一种方法来从 Java 中的 URL 参数中提取有时可能包含 "& and ="的值

转载 作者:行者123 更新时间:2023-12-01 11:57:19 25 4
gpt4 key购买 nike

package com.bml.icbs.ws.param;    
import java.util.HashMap;

公共(public)类请求参数{

private String param;
private HashMap<String, String> hashmap;

public RequestParameter(String param){

this.param=param;
this.hashmap = new HashMap<String, String>();

Integer i;
String key,value;
String myArray[] = this.param.split("&");


for (i=0;i<myArray.length;i++){

key=myArray[i].substring(0,myArray[i].indexOf("="));
value=myArray[i].substring(myArray[i].indexOf("=")+1);
this.hashmap.put(key,value);
}
}

public String getParameterValue(String key){
return this.hashmap.get(key);
}

public String getParam() {
return param;
}

public void setParam(String param) {
this.param = param;
}

public HashMap<String, String> getHashmap() {
return hashmap;
}

public void setHashmap(HashMap<String, String> hashmap) {

this.hashmap = hashmap;
}

}

When I Test the above method in case the URL is "param2=ffffhhh&param1=oooo&param3=pppp&param4=iiii&param5=kkkkk"

结果是:
尺码 5
网址 param2=ffffhhh&param1=oooo&param3=pppp&param4=iii&param5=kkkkk
HashMap {param1=oooo,param2=ffffhhh,param3=pppp,param4=iiii,param5=kkkkk}
PARAM1 = oooo

正确的是

  public static void main(String[] args) {
RequestParameter reqParam = new RequestParameter("param2=ffffhhh&param1=oooo&param3=pppp&param4=iiii&param5=kkkkk");
System.out.println("SIZE " + reqParam.getHashmap().size());
System.out.println("URL " + reqParam.getParam());
System.out.println("HASHMAP " + reqParam.getHashmap());
System.out.println("PARAM1 = " reqParam.getParameterValue("param1"));

}

but In case I pass the URL as the following one: "param2=ffff&&&hhh=&param1=oooo=&&param3=pppp&param4=iiii&&yy=&param5=kkkkk"

public static void main(String[] args) {
RequestParameter reqParam = new RequestParameter("param2=ffff&&&hhh=&param1=oooo=&&param3=pppp&param4=iiii&&yy=&param5=kkkkk");
System.out.println("SIZE " + reqParam.getHashmap().size());
System.out.println("URL " + reqParam.getParam());
System.out.println("HASHMAP " + reqParam.getHashmap());
System.out.println("PARAM1 = " reqParam.getParameterValue("param1"));

}

它抛出以下异常:线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 在 java.lang.String.substring(String.java:1937) 在 com.bml.icbs.ws.param.RequestParameter.(RequestParameter.java:188) 在 com.bml.icbs.ws.param.main.main(main.java:9)

最佳答案

确保数组元素!为空。

for (i=0;i<myArray.length;i++){
if(myArray[i] == null || myArray[i].length()==0){
continue;
}
key=myArray[i].substring(0,myArray[i].indexOf("="));
value=myArray[i].substring(myArray[i].indexOf("=")+1);
this.hashmap.put(key,value);
}

关于java - 我想要一种方法来从 Java 中的 URL 参数中提取有时可能包含 "& and ="的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28344619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com