1

I'm currently trying to catch special chars from an URL to change them to their hex value (for example : "This shop" should transform into "This%20shop").
I was wondering if there was some clean was of looking into the string to find each special chars and replace them to their ascii values. I try to do it because I have to pass PHP arguments into the url using GET.

Here would be an example of an url : www.mysite.com/page?adress=I am Living here!


My code actually reaplace '%' and ' ' from URLs, but I'd like to change any special chars I've defined. This is what I've done so far :

private final String specialChars = "!@\\[]`#$%&'()*+-<>=?";
public URL getURL(){
    String tempUrl = baseURL;
    Set<String> keys = this.arguments.keySet();
    for (Map.Entry<String, String> entry : arguments.entrySet()) {
        String value = entry.getValue();

        if(entry.getValue().contains(specialChars)){
            Log.e("INFO", "THIS URL CONTAINS SPECIAL CHARS");
        }

        //Replacing % char
        if(entry.getValue().contains("%")){
            Log.i("URL BUILD INFO", "URL ARGS CONTAINS '%'");
            value = entry.getValue().replace("%", "%25");
        }
        //Replacing spaces
        if(entry.getValue().contains(" ")){
            Log.i("URL BUILD INFO", "URL ARGS CONTAINS SPACE");
            value = entry.getValue().replace(" ", "%20");
        }

        baseURL += entry.getKey() + "=" + value + "&";
    }
    try{
        this.url = new URL(baseURL);
    } catch(MalformedURLException e){
        Log.e("URL MALFORMED", "YOUR IS MALFORMED");
        e.printStackTrace();
    }
    Log.d("URL IS VALID", url.toString());
    return url;
}

From what I understood from String documentation, matches method should only return true if my URL matches exactly my specialChars charSequence, which isn't what I want. But I can't find any other method to do what I'm trying to achieve on the String documentation.

Nark
  • 454
  • 1
  • 7
  • 18

1 Answers1

1

If you're just trying to handle url encoding there are existing solutions for that - see URLEncoder and URLDecoder (good previous answer here)

Steve B.
  • 55,454
  • 12
  • 93
  • 132