public String addParameter(String url, String name, String value) {
    if (url == null) {
      return null;
    }

    String[] urlArray = PortalUtil.stripURLAnchor(url, StringPool.POUND);

    url = urlArray[0];

    String anchor = urlArray[1];

    StringBundler sb = new StringBundler(7);

    sb.append(url);

    if (url.indexOf(CharPool.QUESTION) == -1) {
      sb.append(StringPool.QUESTION);
    } else if (!url.endsWith(StringPool.QUESTION) && !url.endsWith(StringPool.AMPERSAND)) {

      sb.append(StringPool.AMPERSAND);
    }

    sb.append(name);
    sb.append(StringPool.EQUAL);
    sb.append(encodeURL(value));
    sb.append(anchor);

    return sb.toString();
  }
  public String removeParameter(String url, String name) {
    int pos = url.indexOf(CharPool.QUESTION);

    if (pos == -1) {
      return url;
    }

    String[] array = PortalUtil.stripURLAnchor(url, StringPool.POUND);

    url = array[0];

    String anchor = array[1];

    StringBundler sb = new StringBundler();

    sb.append(url.substring(0, pos + 1));

    String[] parameters =
        StringUtil.split(url.substring(pos + 1, url.length()), CharPool.AMPERSAND);

    for (String parameter : parameters) {
      if (parameter.length() > 0) {
        String[] kvp = StringUtil.split(parameter, CharPool.EQUAL);

        String key = kvp[0];

        String value = StringPool.BLANK;

        if (kvp.length > 1) {
          value = kvp[1];
        }

        if (!key.equals(name)) {
          sb.append(key);
          sb.append(StringPool.EQUAL);
          sb.append(value);
          sb.append(StringPool.AMPERSAND);
        }
      }
    }

    url =
        StringUtil.replace(
            sb.toString(), StringPool.AMPERSAND + StringPool.AMPERSAND, StringPool.AMPERSAND);

    if (url.endsWith(StringPool.AMPERSAND)) {
      url = url.substring(0, url.length() - 1);
    }

    if (url.endsWith(StringPool.QUESTION)) {
      url = url.substring(0, url.length() - 1);
    }

    return url + anchor;
  }