All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.featherfly.common.lang.UriUtils Maven / Gradle / Ivy


/**
 * @author 钟冀 - yufei
 *             Aug 22, 2008
 */
package cn.featherfly.common.lang;

import org.apache.commons.lang.StringUtils;

/**
 * 

* uri的工具类 *

* @author 钟冀 */ public final class UriUtils { private UriUtils() { } /** * uri路径分隔符 */ public static final String SEPARATOR = "/"; /** * 转换 \ 为 / * @param uri 待转换的uri * @return 转换后的字符串 */ public static String convertSeparator(String uri) { return uri.replace("\\", SEPARATOR); } /** * 返回以 / 分割 字符串(例如:/a/b/c/d/e,)后的字符串数组 * @param uri 待分割的uri * @return 以/分割后的字符串数组 */ public static String[] splitUri(String uri) { String[] uris = null; uri = removeStartAndEndSeparator(uri); if (uri.contains(SEPARATOR)) { uris = uri.split(SEPARATOR); } return uris; } /** * link startUri and endUri ignoreCase the separator end of startUri and * the separator start and end of endUri * linkUri("/a/b/","/c/d/") return /a/b/c/d * * @param startUri 开始uri * @param endUri 结束uri * @return 连接后的url */ public static String linkUri(String startUri, String endUri) { return linkUri(startUri, endUri, true); } /** * link startUri and endUri ignoreCase the separator end of startUri and * the separator start and end of endUri * linkUri("/a/b/","/c/d/") return /a/b/c/d * if ignoreCaseEmpty is true and the startUri is empty,will return endUri * if ignoreCaseEmpty = true linkUri("","c/d/") return c/d * if ignoreCaseEmpty = false linkUri("","c/d/") return /c/d * @param startUri 开始uri * @param endUri 结束uri * @param ignoreCaseEmpty 如果开始uri为空,则忽略 * @return 连接后的uri */ public static String linkUri(String startUri, String endUri, boolean ignoreCaseEmpty) { if (ignoreCaseEmpty && StringUtils.isEmpty(startUri)) { return endUri; } if (ignoreCaseEmpty && StringUtils.isEmpty(endUri)) { return startUri; } startUri = removeEndSeparator(startUri); endUri = removeStartAndEndSeparator(endUri); return startUri + UriUtils.SEPARATOR + endUri; } /** * link given uris as given linkUri("/a/b/","c/d","/11/22/","/33/44/") * return /a/b/c/d/11/22/33/44 * * @param uris 待连接的uri * * @return 连接后的uri */ public static String linkUri(String... uris) { return linkUri(true, uris); } /** * link given uris as given linkUri("/a/b/","c/d","/11/22/","/33/44/") * return /a/b/c/d/11/22/33/44 * if ignoreCaseEmpty is true and the beforeUri is empty,will return afterUri * if ignoreCaseEmpty = true linkUri("","","c/d") return c/d * if ignoreCaseEmpty = false linkUri("","","c/d") return /c/d * @param ignoreCaseEmpty 如果开始uri为空,则忽略 * @param uris 待连接的uri * @return 连接后的uri */ public static String linkUri(boolean ignoreCaseEmpty, String... uris) { String resultUri = null; if (uris != null && uris.length > 0) { resultUri = uris[0]; if (uris.length > 1) { for (int i = 1; i < uris.length; i++) { resultUri = linkUri(resultUri, uris[i], ignoreCaseEmpty); } } } return resultUri; } /** * remove start separator of uri /aaa/ -> aaa/ * * @param uri 待处理的uri * @return 移除开始/后的uri */ public static String removeStartSeparator(String uri) { // TODO 使用循环来判断,出现不是UriUtils.SEPARATOR的直接以当前index为界返回substring while (uri.startsWith(UriUtils.SEPARATOR)) { uri = uri.substring(1, uri.length()); } return uri; } /** * remove end separator of uri /aaa/ -> /aaa * * @param uri 待处理的uri * @return 移除结尾/后的uri */ public static String removeEndSeparator(String uri) { // TODO 使用循环来判断(倒序),出现不是UriUtils.SEPARATOR的直接以当前index为界返回substring while (uri.endsWith(UriUtils.SEPARATOR)) { uri = uri.substring(0, uri.length() - 1); } return uri; } /** * remove start and end separator of uri /aaa/ -> aaa * * @param uri 待处理的uri * @return 移除开始结束/后的uri */ public static String removeStartAndEndSeparator(String uri) { uri = removeStartSeparator(uri); uri = removeEndSeparator(uri); return uri; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy