/** * Formats a URI by adding a forward slash and removing the last forward slash from the URI. * * <p>e.g. some/random/uri/ -> /some/random/uri e.g. some/random/uri -> /some/random/uri e.g. * /some/random/uri/ -> /some/random/uri e.g. / -> / e.g. ////// -> / * * @param uri * @return */ public static String formatUri(String uri) { if (StringUtilities.nullSafeStartsWith(uri, "\\")) { // windows file system return uri; } if (StringUtilities.isBlank(uri) || StringUtilities.nullSafeEqualsIgnoreCase("/", uri)) { return "/"; } final StringBuilder externalName = new StringBuilder(uri); if (externalName.charAt(0) != '/') { externalName.insert(0, "/"); } int doubleSlash = externalName.indexOf("//"); while (doubleSlash > -1) { // removes leading '/' externalName.replace(doubleSlash, doubleSlash + 2, "/"); doubleSlash = externalName.indexOf("//"); } if (externalName.charAt(externalName.length() - 1) == '/' && externalName.length() != 1) { externalName.deleteCharAt(externalName.length() - 1); } return externalName.toString(); }