import java.util.HashMap;
import java.util.Map;
public class QueryStringStripper {
public static Map<String, String> stripMetadata(String queryString) {
Map<String, String> params = new HashMap<>();
if (queryString == null || queryString.isEmpty()) {
return params;
}
String[] pairs = queryString.split("&");
for (String pair : pairs) {
if (pair != null && !pair.isEmpty()) {
String[] parts = pair.split("=");
if (parts.length == 2) {
String key = parts[0];
String value = parts[1];
//Remove metadata prefix (e.g., # or %20)
if (key.startsWith("#")) {
key = key.substring(1);
}
if (key.startsWith("%")) {
key = decodeURIComponent(key);
}
params.put(key, value);
}
}
}
return params;
}
private static String decodeURIComponent(String str) {
//Simple implementation for demonstration. More robust solutions exist.
return str;
}
public static void main(String[] args) {
String queryString = "param1=value1¶m2=%20value2¶m3=#value3";
Map<String, String> params = stripMetadata(queryString);
System.out.println(params); //Expected output: {param1=value1, param2= value2, param3=value3}
queryString = "param1=value1";
params = stripMetadata(queryString);
System.out.println(params); //Expected output: {param1=value1}
queryString = null;
params = stripMetadata(queryString);
System.out.println(params); //Expected output: {}
}
}
Add your comment