1. import java.util.HashMap;
  2. import java.util.Map;
  3. public class QueryStringStripper {
  4. public static Map<String, String> stripMetadata(String queryString) {
  5. Map<String, String> params = new HashMap<>();
  6. if (queryString == null || queryString.isEmpty()) {
  7. return params;
  8. }
  9. String[] pairs = queryString.split("&");
  10. for (String pair : pairs) {
  11. if (pair != null && !pair.isEmpty()) {
  12. String[] parts = pair.split("=");
  13. if (parts.length == 2) {
  14. String key = parts[0];
  15. String value = parts[1];
  16. //Remove metadata prefix (e.g., # or %20)
  17. if (key.startsWith("#")) {
  18. key = key.substring(1);
  19. }
  20. if (key.startsWith("%")) {
  21. key = decodeURIComponent(key);
  22. }
  23. params.put(key, value);
  24. }
  25. }
  26. }
  27. return params;
  28. }
  29. private static String decodeURIComponent(String str) {
  30. //Simple implementation for demonstration. More robust solutions exist.
  31. return str;
  32. }
  33. public static void main(String[] args) {
  34. String queryString = "param1=value1&param2=%20value2&param3=#value3";
  35. Map<String, String> params = stripMetadata(queryString);
  36. System.out.println(params); //Expected output: {param1=value1, param2= value2, param3=value3}
  37. queryString = "param1=value1";
  38. params = stripMetadata(queryString);
  39. System.out.println(params); //Expected output: {param1=value1}
  40. queryString = null;
  41. params = stripMetadata(queryString);
  42. System.out.println(params); //Expected output: {}
  43. }
  44. }

Add your comment