JAVA工具类之URL(编码、解码、参数解析)
UrlUtil.java
package com.bigbigbu.util.http;import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;import org.apache.commons.lang3.StringUtils;/**
* @Title: UrlUtil
* @Description: URL(编码、解码、参数解析)
* @Company: 卜凡起的博客
* @author FANQIBU
* @date 2018年2月1日
*/
public class UrlUtil {private final static String ENCODE = "GBK"; /*** URL 解码** @return String* @author lifq* @date 2015-3-17 下午04:09:51*/public static String getURLDecoderString(String str) {String result = "";if (null == str) {return "";}try {result = java.net.URLDecoder.decode(str, ENCODE);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}/*** URL 转码** @return String* @author lifq* @date 2015-3-17 下午04:10:28*/public static String getURLEncoderString(String str) {String result = "";if (null == str) {return "";}try {result = java.net.URLEncoder.encode(str, ENCODE);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}/** * 正则替换 * @param url * @param name * @param value * @return */ public static String replaceUrlParameterReg(String url, String name, String value) { if (StringUtils.isNotBlank(url) && StringUtils.isNotBlank(value)) { url = url.replaceAll("(" + name + "=[^&]*)", name + "=" + value); } return url; } /** * 正则替换 * @param url * @param name * @param value * @return */ public static String getUrlParameterReg(String url, String name) {Map<String, String> mapRequest = new HashMap<String, String>();String[] arrSplit=null;String strUrlParam=TruncateUrlPage(url);if(strUrlParam==null){return "";}//每个键值为一组 www.2cto.comarrSplit=strUrlParam.split("[&]");for(String strSplit:arrSplit){String[] arrSplitEqual=null; arrSplitEqual= strSplit.split("[=]");//解析出键值if(arrSplitEqual.length>1){//正确解析mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);}else{if(arrSplitEqual[0]!=""){//只有参数没有值,不加入mapRequest.put(arrSplitEqual[0], ""); }}} return mapRequest.get(name); } /*** 去掉url中的路径,留下请求参数部分* @param strURL url地址* @return url请求参数部分*/private static String TruncateUrlPage(String strURL){String strAllParam=null;String[] arrSplit=null;strURL=strURL.trim().toLowerCase();arrSplit=strURL.split("[?]");if(strURL.length()>1){if(arrSplit.length>1){if(arrSplit[1]!=null){strAllParam=arrSplit[1];}}}return strAllParam; }public static void main(String[] args) {String str ="/activePage?wxto=0C29975119DE037B4F25CD119CF4CF11&activity2018topid=oz9Zj07Jg5O9IfAyVauT-GL-CSfM&activity2018topunid=o-NUA0l8fxm2_5fmK_ocpyxrP1dE&subscribe=0×tamp=1516008942920&-NUA0l8fxm2_5fmK_ocpyxrP1dE&oaccesstoken=5_xJYY3gnUTD4pqJFc7_ltbvclb0ZRKOFBEc5BXAwi7vjZndRAN58AkPazqUJDGzBbrw-J1ag1PF0C-S39SqJflA&m=1&wxt=C9A58DA3804E46981BF4B78C8C862743&-NUA0oHjJjCcyGe-wJdEFYjwrfU&-NUA0oHjJjCcyGe-wJdEFYjwrfU&-NUA0oHjJjCcyGe-wJdEFYjwrfU";System.out.println( getUrlParameterReg(str,"wxto"));}
}
JAVA工具类之URL(编码、解码、参数解析)相关推荐
- Java工具类-转换字符编码
package common; /***字符串处理公用类 */ public class DealString {/*** 转换字符编码 由"iso-8859-1"西文转换为简体中 ...
- URL编码解码工具类
/****************************************************************************** * CREATETIME : 2016年 ...
- java url加密解密,java URL 编码解码,该如何解决
java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的 .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...
- (6)常用的Java工具类
目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...
- 干货:排名前 16 的 Java 工具类!
2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...
- 排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- java轻量级并行工具类_16 个超级实用的 Java 工具类
原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...
- java 文本工具类_干货:排名前16的Java工具类
原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...
- 干货:排名前16的Java工具类
image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...
最新文章
- python输入一组数据、进行简单的统计_《利用Python进行数据分析》学习笔记——第二章(3)...
- dt决策树_决策树:构建DT的分步方法
- 使用 store 来优化 React 组件
- 从文件夹内批量获取所有文件名 批处理脚本
- mysql获取option的value_js获取下拉列表框option中的value和text的值示例代码
- 为什么那么多公司不用 .NET,而选择PHP、JSP,是 .NET有什么缺点吗?
- zabbix 客户端自定义端口监控
- Nginx 基于nginx-sticky-module模块进行会话保持
- VScode+远程服务器docker+C/C++ 代码挑战配置
- 【渝粤教育】国家开放大学2018年秋季 0676-22T物流成本管理 参考试题
- win10企业版激活简便方法
- 雨听|Vs Code中使用markdown语法实现mac风格的代码块
- Proxmark3系列教程1——PM3用法
- python pySerial模块介绍
- ipv6无网络访问权限可行解决方案
- 软件测试流程图Bug管理流程图
- C语言程序——摄氏度和华氏度之间的转换
- Anaconda常用命令小结
- Verilog 实现占空比为50%的三分频 断言SVA查看波形
- Oracle基本语法及例子
热门文章
- java冒泡排序(含冒泡排序代码)
- oracle exadata中国保有量,怎样购买Exadata?
- office计算机高级应用,全国高等学校计算机水平考试Ⅱ级《Office2010高级应用》考试大纲(试行)...
- 在线搜索全网音乐支持歌曲外链下载等源码[免费开源]
- Jmeter之接口测试流程详解
- 图像处理-Sobel边缘检测(C++实现,不依赖opencv)
- 物联网技术概论:第2章
- SSM框架整合详细过程
- prince2证书有含金量吗?
- mysql超市进存销管理系统_企业进存销管理系统.doc