簡體   English   中英

使用Java獲取字符串中的參數值

[英]Get value of a param in a string using java

我有字符串變量String temp="acc=101&name=test"; 現在如何從臨時字符串獲取name param的值。

temp.split("&")[1].split("=")[1]
    public static Map<String, String> getParamMap(String query)  
    {  
         String[] params = query.split("&");  
         Map<String, String> map = new HashMap<String, String>();  
         for (String param : params)  
         {  
            String name = param.split("=")[0];  
            String value = param.split("=")[1];  
            map.put(name, value);  
         }  
          return map;  
     }


    String temp="acc=101&name=test";

    Map<String, String> map = getParamMap(temp);

    for(Object object :map.keySet()){
        System.out.println("key= "+object +"  value= "+map.get(object));
    }


   System.out.println(map.get("name"));

這是一種非一般的方式

String str = "name=";
System.out.println(temp.substring(temp.indexOf(str) + str.length()));

當然可以用更通用的方式實現:

String temp = "acc=101&name=test";
StringTokenizer st = new StringTokenizer(temp, "&");
String paramName = "name";
String paramValue = "";
while(st.hasMoreElements()) {
    String str = st.nextToken();
    if (str.contains(paramName)) {
        paramValue = str.substring(str.indexOf(paramName) + paramName.length() + 1);
        break;
    }
}
System.out.println(paramValue);
    String temp="acc=101&name=test";
    String[] split = temp.split("&");
    String[] name = split[1].split("=");
    System.out.println(name[1]); 

您可以使用如下方法

public static String getValue(String queyStr, String paraamName){
    String[] queries=queyStr.split("&");
    for(String param:queries){
        if(param.indexOf(paraamName)!=-1)
            return param.split("=")[1];
    }
    return null;
}

並像這樣調用方法

getValue(temp, "name")

假設您使用常量format

 String temp="acc=101&name=test";
 String result =temp.substring(temp.lastIndexOf("=")+1,temp.length());

//result is test
   public static void main(String[] args) 
    {
    String temp = "acc=101&name=test";
    System.out.println(temp.split("&")[1].split("=")[1]);
    }

如果您正在尋找一種從URL解析GET參數的方法:

public static Map<String, String> splitQuery(URL url) throws UnsupportedEncodingException {
    Map<String, String> query_pairs = new LinkedHashMap<String, String>();
    String query = url.getQuery();
    String[] pairs = query.split("&");
    for (String pair : pairs) {
        int idx = pair.indexOf("=");
        query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
    }
    return query_pairs;
}

您可以使用<map>.get("name")訪問返回的Map,並使用問題中給出的URL將返回“ test”。

我會將整個參數放在HashMap中,以便輕松獲取值。

HashMap<String, String> valuemap = new HashMap<String, String>();

如果您這樣做,則必須在正確的位置拆分值。

String temp="acc=101&name=test";

valuemap.put(temp.split("&")[0].split("=")[0], temp.split("&")[0].split("=")[1]);
valuemap.put(temp.split("&")[1].split("=")[0], temp.split("&")[1].split("=")[1]);

...並將它們放入您的HashMap中。 比擁有所有值的漂亮集合更好,如果您擁有的不僅僅是兩個值,那也更好。 如果要返回值,請使用:

valuemap.get("acc")
valuemap.get("name")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM