1、判断是否为纯数字
/**
* 判断是否为纯数字
* @param obj
* @return
*/
public static boolean isNumber(Object obj){
return (Pattern.compile("[0-9]*")).matcher(String.valueOf(obj)).matches();
}
2、字符串每四位隔一个空格
/**
* 字符串每四位隔一个空格
* @param str
* @return
*/
public static String SpaceFormat(String str){
String regex = "(.{4})";
return str.replaceAll (regex, "$1 ");
}
3、随机生成18位唯一不重复的订单号
/**
* 随机生成18位唯一不重复的订单号
* @return
*/
public static String createOrderNumber() {
int machineId = 1;//最大支持1-9个集群机器部署
int hashCodeV = UUID.randomUUID().toString().hashCode();
if(hashCodeV < 0) {//有可能是负数
hashCodeV = - hashCodeV;
}
String UUId=machineId+ String.format("%015d", hashCodeV);
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMddHHmm");
//获取时间戳
String time=dateFormat.format(new Date());
return time+UUId.substring(UUId.length()-6);
}
4、获取用户访问的IP地址
/**
* 获取用户访问的IP地址
* @param request
* @return
*/
public static String getIpAddress(HttpServletRequest request){
String ipAddress = request.getRemoteAddr();
if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) {
// 根据网卡获取本机配置的IP地址
InetAddress inetAddress = null;
try {
inetAddress = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress = inetAddress.getHostAddress();
}
// 对于通过多个代理的情况,第一个IP为客户端真实的IP地址,多个IP按照','分割
if (null != ipAddress && ipAddress.length() > 15) {
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
}
5、获取用户访问的设备
/**
* 获取用户访问的设备
* @param request
* @return
*/
public static String getVisitDevice(HttpServletRequest request){
String device="电脑浏览器";
String userAgent = request.getHeader("user-agent").toLowerCase();
if(userAgent.indexOf("micromessenger")!= -1){
//微信
device="微信";
}else if(userAgent.indexOf("android") != -1){
//安卓
device="安卓手机";
}else if(userAgent.indexOf("iphone") != -1){
//苹果
device="苹果手机";
}else if(userAgent.indexOf("ipad") != -1 ){
//ipad
device="苹果ipad";
}else if(userAgent.indexOf("ipod") != -1){
//ipod
device="苹果ipod";
}
return device;
}
6、获取16位不重复的随机数 (2位年份+11位时间戳+3位随机数)
//16位末尾的数字id
public static int Guid=100;
public static String getGuid() {
String code="";
Guid+=1;
long now = System.currentTimeMillis();
//获取4位年份数字
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy");
//获取时间戳
String time=dateFormat.format(now).substring(2);
String info=now+"";
//获取三位随机数
//要是一段时间内的数据连过大会有重复的情况,所以做以下修改
int ran=0;
if(Guid>999){
Guid=100;
}
ran=Guid;
code=time+info.substring(2, info.length())+ran;
//随机打乱顺序
List<String> list=Arrays.asList(code.split(""));
Collections.shuffle(list);
String out=new String();
for(String s:list){
out+=s;
}
//return code; //正常
return out; //打乱顺序
}