MCPcopy Create free account
hub / github.com/0opslab/opslabJutil / parseQuery

Method parseQuery

src/main/java/com/opslab/helper/UrlHelper.java:586–630  ·  view source on GitHub ↗

解析字符串返回map键值对(例:a=1&b=2 => a=1,b=2) @param query 源参数字符串 @param split1 键值对之间的分隔符(例:&) @param split2 key与value之间的分隔符(例:=) @param dupLink 重复参数名的参数值之间的连接符,连接后的字符串作为该参数的参数值,可为null null:不允许重复参数名出现,则靠后的参数值会覆盖掉靠前的参数值。 @return map

(String query, char split1, char split2, String dupLink)

Source from the content-addressed store, hash-verified

584 * @return map
585 */
586 public static Map<String, String> parseQuery(String query, char split1, char split2, String dupLink) {
587 if (!StringUtil.isEmpty(query) && query.indexOf(split2) > 0) {
588 Map<String, String> result = new HashMap<>();
589
590 String name = null;
591 String value = null;
592 String tempValue = "";
593 int len = query.length();
594 for (int i = 0; i < len; i++) {
595 char c = query.charAt(i);
596 if (c == split2) {
597 value = "";
598 } else if (c == split1) {
599 if (!StringUtil.isEmpty(name) && value != null) {
600 if (dupLink != null) {
601 tempValue = result.get(name);
602 if (tempValue != null) {
603 value += dupLink + tempValue;
604 }
605 }
606 result.put(name, value);
607 }
608 name = null;
609 value = null;
610 } else if (value != null) {
611 value += c;
612 } else {
613 name = (name != null) ? (name + c) : "" + c;
614 }
615 }
616
617 if (!StringUtil.isEmpty(name) && value != null) {
618 if (dupLink != null) {
619 tempValue = result.get(name);
620 if (tempValue != null) {
621 value += dupLink + tempValue;
622 }
623 }
624 result.put(name, value);
625 }
626
627 return result;
628 }
629 return null;
630 }
631
632 /**
633 * 解析http请求URI

Callers 2

testParseQueryMethod · 0.95
httpParseQueryMethod · 0.95

Calls 1

isEmptyMethod · 0.95

Tested by 1

testParseQueryMethod · 0.76