从哈希图获取特定密钥



我用正则表达式":"拆分字符串。拆分字符串并使用 HashMap() 中的put()方法映射字符串后,当我尝试在键中获取特定的映射时,它会从字符串中返回所有带有":"的值映射。

这是我的代码:

   public class MyClass {
     private HashMap<String,String> map = null;
     private String newString;

    public MyClass(String newString) {
        this.newString = newString;
        map = new HashMap<String, String>();
    }
    public static MyClass ReadEntityRequest(String string) {
        MyClass Request = new MyClass(string);
        String[] arraystring = Request.string.split("rn", 2);
        String[] arraystring1 = arraystring[1].replace("rnrn", "").split("rn");
        for (int i = 0; i < arraystring1.length; i++){
        String[] arraystring2 = arraystring1[i].split(":");
        Request.map.put(arraystring2[0], arraystring[1]);
        }
        return Request;
    }

    public String getHeaderField(String string) {
        String headerField = map.get(string);
        if(headerField != null){
            return headerField;
        }
        return null;
    }
    }

下面是获取特定键"内容长度"的方法调用。

MyClass newRequest = MyClass.ReadEntityRequest(newStream);
int contLengthOffset = Integer.parseInt(newRequest.getHeaderField("Content-Length"));

我想要的结果是从字符串中仅获取关键字"内容长度"。如有必要,将很乐意提供更多代码。有什么建议吗?

您似乎为映射中的所有键放置了相同的值:

Request.map.put(arraystring2[0], arraystring[1]);

尝试:

Request.map.put(arraystring2[0], arraystring2[1]);

你的代码有一些错误。请参阅以下更改。现在它应该可以工作了。

public static MyClass ReadEntityRequest(String string) {
    MyClass Request = new MyClass(string);
    String[] arraystring = Request.newString.split("rn", 2);
    String[] arraystring1 = arraystring[1].replace("rnrn", "").split("rn");
    for (int i = 0; i < arraystring1.length; i++){
    String[] arraystring2 = arraystring1[i].split(":");
    Request.map.put(arraystring2[0], arraystring2[1]);
    }
    return Request;
}