Java query string builder and parser
Java
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import java.util.Map;
public final class QueryString {
public static String build(Map<String, String> p) {
StringBuilder sb = new StringBuilder();
p.forEach((k, v) -> sb.append(sb.length() == 0 ? "" : "&").append(enc(k)).append('=').append(enc(v)));
return sb.toString();
}
public static Map<String, String> parse(String q) {
Map<String, String> out = new LinkedHashMap<>();
for (String pair : (q == null || q.isBlank() ? new String[0] : q.replaceFirst("^\\?", "").split("&"))) {
int eq = pair.indexOf('=');
out.put(dec(eq < 0 ? pair : pair.substring(0, eq)), eq < 0 ? "" : dec(pair.substring(eq + 1)));
}
return out;
}
private static String enc(String s) { return URLEncoder.encode(s, StandardCharsets.UTF_8); }
private static String dec(String s) { return URLDecoder.decode(s, StandardCharsets.UTF_8); }
}