public static String normalize()

in src/main/java/com/twitter/joauth/UrlCodec.java [110:162]


  public static String normalize(String s) {
    if (s == null) {
      return null;
    }

    StringBuilder sb = null;
    int length = s.length();
    int i = 0;

    while (i < length) {
      char c = s.charAt(i);
      if (c == '%' || c == '+' || c == ',' || c == '[' || c == ']') {
        if (sb == null) {
          sb = new StringBuilder(s.length() + 40); //use length
          sb.append(s, 0, i);
        }
        if (c == '%') {
          if (i + 3 <= length) {
            if (ENCODED_UNDERSCORE.regionMatches(true, 1, s, i + 1, 2)) {
              sb.append(UNDERSCORE);
            } else if (ENCODED_DASH.regionMatches(true, 1, s, i + 1, 2)) {
              sb.append(DASH);
            } else if (ENCODED_TILDE.regionMatches(true, 1, s, i + 1, 2)) {
              sb.append(TILDE);
            } else if (ENCODED_PERIOD.regionMatches(true, 1, s, i + 1, 2)) {
              sb.append(PERIOD);
            } else {
              for (int j = i; j < i + 3; j++) {
                sb.append(Character.toUpperCase(s.charAt(j)));
              }
            }

            i += 2;
          } else {
            sb.append(c);
          }
        } else if (c == ',') {
          sb.append(ENCODED_COMMA);
        } else if (c == '+') {
          sb.append(ENCODED_PLUS);
        } else if (c == '[') {
          sb.append(ENCODED_OPEN_BRACKET);
        } else if (c == ']') {
          sb.append(ENCODED_CLOSE_BRACKET);
        }
      } else if (sb != null) {
        sb.append(c);
      }
      i += 1;
    }

    return (sb == null) ? s : sb.toString();
  }