在Java库中使用Uri.encode实现

时间:2015-08-12 22:55:46

标签: java android

我正在实现一个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类(因此可以通过命名的微小更改进行复制粘贴)到我的库中。在使用这段代码之前,我需要注意什么。

1 个答案:

答案 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", "~");