当前位置: 首页 > 知识库问答 >
问题:

我需要一个方法来提取有时可能包含“的值”

岳安福
2023-03-14
package com.bml.icbs.ws.param;    
import java.util.HashMap;

公共类请求参数{

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;
}

}

当我在URL为“param2=ffffhhh”的情况下测试上述方法

结果是:SIZE 5 URL参数2=ffffhhh

哪个是正确的

  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"));

}

但如果我将URL作为以下URL传递:“param2=ffff

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.StringIndexOutOfBoundsExcture:字符串索引超出范围:-1在java.lang.String.substring(String.java:1937)在com.bml.icbs.ws.param.请求参数。(arameter.java:188)在com.bml.icbs.ws.param.main.main(main.java: 9)


共有1个答案

叶俊郎
2023-03-14

确保数组元素!埃米。

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);
    }
 类似资料:
  • 公共类RequestParameter{ } 当我测试上述方法时,如果URL是“param2=ffffhhh&param1=oooo&param3=ppp&param4=iiii&param5=kkkkk” 它引发以下异常:线程“main”java.lang.StringIndexOutOfboundsException:String索引超出范围:在com.bml.icbs.ws.param.re

  • 我对在Java8中使用optionals是新手。我知道orElseGet()方法接受一个供应商,orElseThrow()也接受一个引发异常的供应商。如果我可以构造自己的异常,并在异常被触发时执行某些操作,orElseThrow()可能是一个很好的方法。 我的主要目标是使用一个方法,该方法要么获得未包装的值,要么如果可选包装为null,则实际执行一个完全不同的函数。 寻找最接近的东西: 如果唯一的

  • 我还不明白的是,喷口是否也是这样。如果一个spout发出一个元组(即,spout中的函数被执行),并且spout运行的计算机在此后不久崩溃,该元组会被zookeeper复活吗?还是我们需要Kafka来保证这一点? 附注。我理解,在对的调用中,必须为spout发出的元组分配唯一的ID。 P.P.S.我在书中看到的示例代码使用之类的东西来跟踪哪些喷出的元组尚未被加密。这是不是自动被Zookeeper坚

  • 下面是匿名内部类的示例,我们使用A创建匿名类 我的问题是我们可以将 设置为匿名(而不是其内部匿名类),即包含公共静态 void main 方法的简单类。

  • 问题内容: 我有一个包含很大一部分html的字符串,并且正在尝试从字符串的href =“ …”部分提取链接。href可以采用以下形式之一: 我真的没有正则表达式的问题,但是由于某些原因,当我使用以下代码时: 有人可以告诉我我的代码有什么问题吗?我在php中做过这些事情,但是在Java中我却以某种方式做错了什么。正在发生的事情是,每当我尝试打印它时,它都会打印整个html字符串… 编辑:以便每个人都

  • 问题内容: 考虑这种情况… 我有1000美元,我想购买上面列出的东西。 我想花全部钱 因此,我需要一个查询,该查询将给出所有产品中多少单位的价格为1000 $ 有什么帮助吗? 问题答案: 这是硬编码的,几乎没有灵活性。我的系统花了2分钟才能运行。但是可能会有所帮助,如果没有,抱歉。fnGenerate_Numbers是一个表函数,它返回参数范围内的整数。 做到这一点的方法。