我正在实现一个Java库。在库中,我需要使用Java等效的Android的Uri.encode()方法。虽然最初我想过使用类似的东西:
encodedString = URLEncoder.encode(originalString, "UTF-8")
.replaceAll("\\+", "%20")
.replaceAll("\\%21", "!")
.replaceAll("\\%27", "'")
.replaceAll("\\%28", "(")
.replaceAll("\\%29", ")")
.replaceAll("\\%7E", "~")
但是我发现Android的Uri.encode()实现只依赖于StringBuilder类(因此可以通过命名的微小更改进行复制粘贴)到我的库中。在使用这段代码之前,我需要注意什么。
答案 0 :(得分:0)
您可以在返回之前转换字符串:
return new StringBuilder(encodedString);
或使用StringBuilde.replace
方法(速度更快,但如果在宽循环中使用它,则只会产生差异):
StringBuilder encodedString = new StringBuilder();
encodedString = URLEncoder.encode(originalString, "UTF-8")
.replace(0, originalString.length(), "\\+", "%20")
.replace(0, originalString.length(), "\\%21", "!")
.replace(0, originalString.length(), "\\%27", "'")
.replace(0, originalString.length(), "\\%28", "(")
.replace(0, originalString.length(), "\\%29", ")")
.replace(0, originalString.length(), "\\%7E", "~");