package com.ftwj.utils.result;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 字符串校验工具类
*
* @author yoyx@foxmail.com
* @date 2017年12月4日上午11:20:09
*/
public class StringTools {
public static final String ALL_CHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static final String NUM_CHAR = "0123456789";
public static final Pattern p = Pattern.compile("<img[^>]*?src[\\s]*=[\\s]*(['|\"]{0,1})(.*?)\\1[^>]*?>", Pattern.CASE_INSENSITIVE);
private static Random random = new Random();
/**
* 空字符串检测
*
* @param args
* @return 是空串返回true
* @author yoyx@foxmail.com
* @version 创建时间:2017年12月4日上午11:20:09
*/
public static boolean isNullStr(String... args) {
boolean falg = false;
for (String arg : args) {
if (StringUtils.isEmpty(arg) || arg.equals("null") || arg == null || "".equals(arg)) {
falg = true;
return falg;
}
}
return falg;
}
/**
* 判断是不是有不为空的字符串 只要有一个字符串不为空就返回true
*
* @param args
* @return
* @author yoyx@foxmail.com
* @version 创建时间:2017年12月4日上午11:20:09
*/
public static boolean isNotAllNullStr(String... args) {
boolean falg = true;
for (String arg : args) {
if (!StringUtils.isEmpty(arg)) {
falg = false;
return falg;
}
}
return falg;
}
/**
* @author: jaymou@qq.com
* @Description: 返回一个定长的随机字符串(只包含大小写字母 、 数字)
*/
public static String generateString(int length) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
sb.append(ALL_CHAR.charAt(random.nextInt(ALL_CHAR.length())));
}
return sb.toString();
}
public static String generateNumString(int length) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
sb.append(ALL_CHAR.charAt(random.nextInt(NUM_CHAR.length())));
}
return sb.toString();
}
/**
* @author: jaymou@qq.com
* @Description: 将Object转换为String
*/
@SuppressWarnings("unused")
public static String objectToString(Object object) {
if (object != null) {
return object + "";
} else {
return "";
}
}
/**
* @Description: 获取JSONObject对象
* @author jaymou@qq.com
*/
public static String getJsonObjectString(com.alibaba.fastjson.JSONObject jsonObject, String key) {
if (jsonObject.containsKey(key)) {
String string = jsonObject.getString(key);
string = "null".equals(string) ? null : string;
return string;
}
return "";
}
/**
* @Description: TODO:(拼接in字符串)
* @author: jaymou@qq.com
*/
public static String getInWord(String orignStr) {
String[] projectArr = orignStr.split(",");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < projectArr.length; i++) {
sb.append("'" + projectArr[i] + "'");//拼接单引号,到数据库后台用in查询.
if (i != projectArr.length - 1) {//前面的元素后面全拼上",",最后一个元素后不拼
sb.append(",");
}
}
return sb.toString();
}
public static String getListInWord(List<Map<String, Object>> list) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append("'" + list.get(i).get("id") + "'");//拼接单引号,到数据库后台用in查询.
if (i != list.size() - 1) {//前面的元素后面全拼上",",最后一个元素后不拼
sb.append(",");
}
}
return sb.toString();
}
/**
* 获取文件前缀
*
* @param fileName
* @return
*/
public static String getFilePrefix(String fileName) {
if (fileName == null || "".equals(fileName)) {
return null;
}
return fileName.substring(0, fileName.lastIndexOf("."));
}
/**
* 获取文件后缀
*
* @param fileName
* @return
*/
public static String getFileSufix(String fileName) {
int pointIndex = fileName.lastIndexOf(".");
if (fileName == null || "".equals(fileName) || pointIndex < 0) {
return null;
}
return fileName.substring(pointIndex);//从最后一个点之后截取字符串
}
/**
* @description: 获取项目路径
* @author: JayMou
* @time: 2019/7/18 10:26
*/
public static String getWebAppPath(HttpServletRequest request) {
String path = "";
String protol = request.getScheme();//获取协议,http
String serverName = request.getServerName();//获取服务器名,localhost
int serverPort = request.getServerPort();//获取服务器端口,8080
String contextPath = request.getContextPath();//获取项目名,/DemoName
path = new StringBuffer(protol).append("://").append(serverName).append(":").append(serverPort).append(contextPath).toString();
return path;
}
/**
* 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址,
* <p>
* 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
* 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
* <p>
* 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,
* 192.168.1.100
* <p>
* 用户真实IP为: 192.168.1.110
*
* @param request
* @return
*/
public static String getIpAddress(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
public static String filterNull(String str) {
str = "" + str;
if ("null".equals(str.trim())) {
str = "";
}
return str;
}
/**
* 处理父子级管理列表数据
*
* @return
*/
public static List<Map<String, Object>> sortFcList(List<Map<String, Object>> list) {
List<Map<String, Object>> faterList = new ArrayList<Map<String, Object>>();
if (list != null && !list.isEmpty()) {
for (Map<String, Object> map : list) {
String fid = filterNull("" + map.get("fid"));
if ("0".equals(fid)) {
faterList.add(map);
}
}
for (Map<String, Object> fatherMap : faterList) {
Str
csbysj2020
- 粉丝: 2967
- 资源: 5596
最新资源
- 汇川,H3U,plc程序模板和触摸屏程序模板,三个步进和三个伺服,三个伺服用的是canlink总线,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时
- 采用电力载波通讯技术的互动开关软件源代码,硬件电路图 自有算法,传输距离远,抗干扰性能强,能穿透空气开关
- simulink调用神经网络训练好的模型进行回归预测,分类,以及时间序列分析 事先根据数据集对模型进行训练,以此保存最好模型,再在simulink中调用保存的模型,实现预测需求 包括MATLAB程
- PLC生产方案,国产AT32F407芯片,支持CANOPEN控制伺服,支持扩展模块,以太网DHCP DNS客户端,服务器tcp modbus,AD DA 称重,直线,圆弧插补,G代码运动控制,10轴2
- 维纶触摸屏程序实际项目,威纶通界面UI,复制可用,威伦通触摸EB Pro6.00以上版本均可用,ip和ie系列4.3寸7寸10寸均复制可用电子文档,
- 西门子1200灌装线全线程序,程序分为两部分,一部分为实际应用程序,一部分为仿真程序,程序包含PLC程序和触摸屏程序,内容包含手动,自动运行,模拟量处理,数据统计及存储,故障处理,急停处理,报警等相关
- matlab程序,文章付现,关键词:共享储能电站,日前优化调度,工业用户 非原价 拿之前问清楚 可以运行看结果,出不 不
- Three-Phase-Inverter-3Level:基于MATALB Simulink的三相三电平SVPWM逆变器仿真模型 仿真条件:MATLAB Simulink R2015b
- 该弱磁算法采用单电流控制策略,额定转速以下采用MTPA控制,额定转速以上采用单电流控制
- 小波分析Matlab程序,小波变(wavelet transform,WT)是一种新的变分析方法,它继承和发展了短时傅立叶变局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变
- FANUC发那科机器人以太网通信,Socket Message通讯,KAREL程序.KL karel程序,发那科机器人TCP以太网通讯,与PLC、上位机、相机进行数据交,可连接第三方相机,接收相机偏移
- XR3DI Rendering Engine Ultimate 1.0.rar
- 基于Canfesitival的Canopen从站程序 stm32 canopen从站通信代码,已经过主控测试,异步心跳模式,目前经测试数据更新速率可达200hz 支持多pdo传输 配备对应eds文件
- 永磁同步电机pmsm无感foc驱动代码 位置估算源码 无刷直流电机无感foc源码,无感foc算法源码 若需要,可提供硬件 速度位置估算部分代码所使用变量全部使用国际标准单位,使用不到60行代码实现完整
- 永磁同步电机(PMSM)速度电流双闭环FOC矢量控制
- 二阶非线性多智能体系统; 动态事件触发机制; 领导跟随一致性; DOBC; 外部干扰
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈