Is there a kind of URLEncode in Groovy?
I can't find any String → String URL encoding utility.
Example: dehydrogenase (NADP+)
→ dehydrogenase%20(NADP%2b)
(+
instead of %20
would also be acceptable, as some implementations do that)
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format. URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign or with %20.
Simply put, URL encoding translates special characters from the URL to a representation that adheres to the spec and can be correctly understood and interpreted.
So you can test if the string contains a colon, if not, urldecode it, and if that string contains a colon, the original string was url encoded, if not, check if the strings are different and if so, urldecode again and if not, it is not a valid URI.
You could use java.net.URLEncoder
.
In your example above, the brackets must be encoded too:
def toEncode = "dehydrogenase (NADP+)" assert java.net.URLEncoder.encode(toEncode, "UTF-8") == "dehydrogenase+%28NADP%2B%29"
You could also add a method to string's metaclass:
String.metaClass.encodeURL = { java.net.URLEncoder.encode(delegate, "UTF-8") }
And simple call encodeURL()
on any string:
def toEncode = "dehydrogenase (NADP+)" assert toEncode.encodeURL() == "dehydrogenase+%28NADP%2B%29"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With