package com.keju.maomao.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 字符串工具类
*
* @author Zhoujun 说明:处理一下字符串的常用操作,字符串校验等
*/
public class StringUtil {
/**
* 判断字符串是否为空或者空字符串 如果字符串是空或空字符串则返回true,否则返回false
*
* @param str
* @return
*/
public static boolean isBlank(String str) {
if (str == null || "".equals(str)) {
return true;
} else {
return false;
}
}
/**
* 验证邮箱输入是否合法
*
* @param strEmail
* @return
*/
public static boolean isEmail(String strEmail) {
// String strPattern =
// "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
String strPattern = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$";
Pattern p = Pattern.compile(strPattern);
Matcher m = p.matcher(strEmail);
return m.matches();
}
/**
* 验证是否是手机号码
*
* @param str
* @return
*/
public static boolean isMobile(String str) {
Pattern pattern = Pattern.compile("1[0-9]{10}");
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
return true;
} else {
return false;
}
}
/**
* MD5加密
*
* @param secret_key
* @return
*/
public static String createSign(String secret_key) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(secret_key.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.exit(-1);
} catch (UnsupportedEncodingException e) {
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString();
}
/**
* 字符全角化
*
* @param input
* @return
*/
public static String ToDBC(String input) {
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char) (c[i] - 65248);
}
return new String(c);
}
/**
* 判断是否是中文
*
* @param c
* @return
*/
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}
/**
* 判断字符串是否超过指定字符数
*
* @param content
* @param stringNum
* 指定字符数 如:140
* @return
*/
public static boolean countStringLength(String content, int stringNum) {
int result = 0;
if (content != null && !"".equals(content)) {
char[] contentArr = content.toCharArray();
if (contentArr != null) {
for (int i = 0; i < contentArr.length; i++) {
char c = contentArr[i];
if (isChinese(c)) {
result += 3;
} else {
result += 1;
}
}
}
}
if (result > stringNum * 3) {
return true;
} else {
return false;
}
}
/**
* 将网络图片路径md5加密作为文件名
*
* @param imageUrl
* @return
*/
public static String createImageName(String imageUrl) {
return createSign(imageUrl) + ".jpg";
}
/**
* 将网络图片路径md5加密作为文件名,可以设置图片类型
*
* @param imageUrl
* @param imgSuffix
* @return
*/
public static String createImageName(String imageUrl, String imgSuffix) {
return createSign(imageUrl) + imgSuffix;
}
/**
* 计算地球上两点间的距离;
*
* @param lat1
* @param longt1
* @param lat2
* @param longt2
* @return
*/
public static double getDistance(double lat1, double longt1, double lat2, double longt2) {
double PI = 3.14159265358979323; // 圆周率
double R = 6371229; // 地球的半径
double x, y, distance;
x = (longt2 - longt1) * PI * R * Math.cos(((lat1 + lat2) / 2) * PI / 180) / 180;
y = (lat2 - lat1) * PI * R / 180;
distance = Math.hypot(x, y);
return Math.rint(distance);
}
public static String getExceptionInfo(Exception e) {
// TODO Auto-generated method stub
return null;
}
/**
* 字符串截取
*
* @param str1
* @return
*/
public static String[] stringCut(String str1) {
StringTokenizer token = new StringTokenizer(str1, "$$");
String[] add = new String[3];
int i = 0;
while (token.hasMoreTokens()) {
add[i] = token.nextToken();
i++;
}
return add;
}
}