public abstract class StringUtil {
/**
* 产生一个随机的字符串
*
* @param 字符串长度
* @return
*/
public static String getRandomString(int length) {
String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
/**
* 获取url地址中的参数,用哈希列表返回结果
*
* @param url
* @param isUrlEncode
* 表示是否需要做url转义
* @return
*/
public static Hashtable<String, String> getUrlParam(String url,
boolean isUrlEncode) {
Hashtable result = new Hashtable<String, String>();
try {
if (!isNullOrEmpty(url)) {
if (url.contains("?")) {
url = url.substring(url.indexOf("?") + 1);
}
String[] params = url.split("&");
String key = "";
String value = "";
for (int i = 0; i < params.length; i++) {
if (params[i].contains("=")) {
key = params[i].substring(0, params[i].indexOf("="));
value = params[i].substring(params[i].indexOf("=") + 1);
if (isUrlEncode) {
value = java.net.URLDecoder.decode(value, "utf-8");
}
result.put(key, value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 得到本地html浏览的路径
*
* @return
*/
public static String getHtmlLocalPath() {
String htmlLocalPath = "content://com.android.htmlfileprovider";
int version = android.os.Build.VERSION.SDK_INT;
if (version >= 9)
htmlLocalPath = "file://";
return htmlLocalPath;
}
/**
* 将字符串转成html格式,将\r\n换成<br/>
* ,在最外层用p标签包围
*
* @param content
* @return
*/
public static String getHtmlString(String content) {
return getHtmlString(content, "");
}
/**
* 根据输入字符串,转换成html文本,将\r\n换成<br/>
* ,在最外层用p标签包围,classname为最外层p的css eg: getHtmlString("test\r\n123","title")
* 结果为
* <p class="title">
* test><br/>
* 123
* </p>
*
* @param content
* @param className
* @return
*/
public static String getHtmlString(String content, String className) {
String result = "";
if (!isNullOrEmpty(content)) {
content = content.replace("\r", "");
/*
* if (content.contains("\n")) { String[] arr = content.split("\n");
* for (int i = 0; i < arr.length; i++) { result +=
* "<p "+className+" >" + arr[i] + "</p>"; }
*
* }else{ result = "<p' "+className+" >" +content + "</p>"; }
*/
result = "<p " + className + " >" + content.replace("\n", "<br />")
+ "</p>";
}
return result;
}
/**
* 判断字符串是否有值,如果为null或者是空字符串或者只有空格,则返回true,否则则返回false
*
* @param value
* @return
*/
public static boolean isNullOrEmpty(String value) {
boolean result = false;
if (value != null && !"".equalsIgnoreCase(value.trim())) {
result = false;
} else {
result = true;
}
return result;
}
/**
* 判断是否为手机号码
*
* @param num
* @return
*/
public static boolean IsUserNumber(String num) {
String regMobileStr = "^1[0-9]{10}$";
num = formatMobile(num);
return num.matches(regMobileStr);
}
/**
* 还原11位手机号
*
* @param num
* @return
*/
public static String formatMobile(String num) {
if (num != null && !num.equals("")) {
if (num.startsWith("+86")) {
num = num.substring(3);
} else if (num.startsWith("86")) {
num = num.substring(2);
}
} else {
num = "";
}
return num;
}
/**
* 判断字符串是否为手机号码加逗号组成的字符串 eg: IsManyUserNumber("13000000000,13999999999");
*
* @param num
* @return
*/
public static boolean IsManyUserNumber(String manyNum) {
boolean re = true;
if (manyNum != null && !"".equals(manyNum)) {
String[] numbers = manyNum.split(",");
if (numbers != null && numbers.length > 0) {
for (int i = 0; i < numbers.length; i++) {
if (IsUserNumber(MobileUtil.formatNumber(numbers[i])) == false)
re = false;
}
}
} else {
re = false;
}
return re;
}
/**
* MD5转码
*
* @param input
* @return
*/
public static String toMD5(String input) {
// LogUtil.d("开始对字符串进行MD5:" + input);
String result = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
result = byte2hex(md.digest(input.getBytes("utf-8")));
} catch (Exception e) {
throw new java.lang.RuntimeException("sign error !");
}
return result;
}
/**
* 二行制转字符串
*/
public static String byte2hex(byte[] b) {
StringBuffer hs = new StringBuffer();
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs.append("0").append(stmp);
else
hs.append(stmp);
}
return hs.toString().toUpperCase();
}
/**
* 获取url连接的扩展名
*
* @param url
* @return
*/
public static String getMiniTypeFromUrl(String url) {
String end = url.substring(url.lastIndexOf(".") + 1, url.length())
.toLowerCase();
if (end.indexOf("?") > -1) {
end = end.substring(0, end.indexOf("?"));
}
if (end.indexOf("/") > -1) {
end = end.substring(0, end.length() - 1);
}
String type = "";
if (end.equals("m4a") || end.equals("mp3") || end.equals("mid")
|| end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {
type = "audio/*";
} else if (end.equals("3gp") || end.equals("mp4")) {
type = "video/*";
} else if (end.equals("jpg") || end.equals("gif") || end.equals("png")
|| end.equals("jpeg") || end.equals("bmp")) {
type = "image/*";
} else if (end.equals("apk")) {
/* android.permission.INSTALL_PACKAGES */
type = "application/vnd.android.package-archive";
}
// 加入对ms office及pdf,rar,zip的判断
else if (end.equals("doc")) {
type = "application/msword";
} else if (end.equals("docx")) {
type = "application/msword";
} else if (end.equals("xls")) {
type = "application/msexcel";
} else if (end.equals("xlsx")) {
type = "application/msexcel";
} else if (end.equals("ppt")) {
// type = "application/msppt";
type = "application/vnd.ms-powerpoint";
} else if (end.equals("pptx")) {
type = "application/vnd.ms-powerpoint";
} else if (end.equals("pdf")) {
type = "application/pdf";
} else if (end.equals("rar")) {
type = "application/rar";
} else if (end.equals("zip")) {
type = "application/zip";
}
// 判断是否链接
else if (end.equals("html") || end.equals("htm") || end.equals("shtml")
|| end.equals("asp") || end.equals("aspx") || end.equals("jsp")
|| end.equals("php") || end.equals("perl") || end.equals("cgi")
|| end.equals("xml") || end.equals("com") || end.equals("cn")
|| end.equals("mobi") || end.equals("tel")
|| end.equals("asia") || end.equals("net") || end.equals("org")
|| end.equals("name") || end.equals("me") || end.equals("info")
|| end.equals("cc") || end.equals("hk") || end.equals("biz")
|| end.equals("tv") || end.equals("公司") || end.equals("网络")
|| end.equals("中国")) {
type = "link";
}
/* 如果无法直接打开,就跳出软件列表给用户选择 */
else {
type = "/*";
}
return type;
}
/**
* 获取时间戳,格式“MMddHHmmss”
*
* @return
*/
public static String getCurrentTime() {
return getCurrentTime("MMddHHmmss");
}
/**
* 获取指定格式的时间戳
*
* @param format
* @return
*/
public static String getCurrentTime(String format) {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
}
/**
* 判断给定的字符串是不是数字
*
* @param strNum
* @return
*/
public static boolean isNumber(String strNum) {
boolean result = false;
if (strNum == null || "".equalsIgnoreCase(strNum)) {
result = false;
} else {
Pattern pattern = Pattern.compile("^[\\-]?\\d*$");
Matcher matcher = pattern.matcher(strNum);
if (matcher.matches()) {
result = true;
} else {
result = false;
}
}
return result;
}
/**
* 转换字符为整数
*
* @param strValue
* @param def
* 出错的默认值
* @return
*/
public static int convertToInt(String strValue, int def) {
int result = def;
try {
if (isNumber(strValue)) {
result = Integer.parseInt(strValue);
} else {
result = def;
}
} catch (NumberFormatException e) {
LogUtil.e(e.toString());
e.printStackTrace();
result = def;
}
return result;
}
/**
* 过滤xml文件中的非法字符,将xml 用到的特舒符号转义,如"&"转为"&" "<"转为 "<"
*
* @param strValue
* @return
*/
public static String getSafeXmlString(String strValue) {
String result = "";
if (strValue != null) {
result = strValue.replace("&", "&").replace("<", "<")
.replace(">", ">");
result = result.replace("'", "'").replace("\"", """);
}
return result;
}
/**
* 根据60进制的字符串,解析出10进制的字符串
*
* @param str62
* @return
*/
public static String getStr10FromStr62(String str62) {
long result = 0;
try {
for (int i = 0; i < str62.length(); i++) {
int c = str62.charAt(str62.length() - i - 1);
// 0-9: 48-57 a-z:97-122 A-Z:65-90
if (c >= '0' && c <= '9') {
c = c - '0';
} else if (c >= 'a' && c <= 'z') {
c = c - 'a' + 10;
} else if (c >= 'A' && c <= 'Z') {
c = c - 'A' + 36;
} else {
result = 0;
break;
}
result += c * Math.pow(62, i);
}
} catch (Exception e) {
LogUtil.e(e.toString());
e.printStackTrace();
}
return result + "";
}
/**
* 大整数相加
*
* @param numFirst
* @param numSecond
* @return
*/
public static String BigNumPlus(String numFirst, String numSecond) {
String rtnResult = "";
int carryValue = 0;
int iFirst = numFirst.length() - 1, iSecond = numSecond.length() - 1;
for (; iFirst >= 0 && iSecond >= 0; iFirst--, iSecond--) {
int tempFirst = numFirst.charAt(iFirst) - '0';// 此处如果不减去0的ASCII码值,得到的是对应数字的ASCII码值
int tempSecond = numSecond.charAt(iSecond) - '0';
int tempSum = tempFirst + tempSecond + carryValue;
if (tempSum >= 10) {
rtnResult = (tempSum - 10) + rtnResult;
carryValue = 1;
} else {
rtnResult = tempSum + rtnResult;
carryValue = 0;
}
}// 两数值共有长度部分相加
// 处理较长数值的数
while (iFirst >= 0) {
int tempSum = numFirst.charAt(iFirst--) - '0' + carryValue;
if (tempSum >= 10) {
rtnResult = "0" + rtnResult;// 最后有进位,切当前位值为 9
carryValue = 1;
} else {
rtnResult = tempSum + rtnResult;
carryValue = 0;
}
}
while (iSecond >= 0) {
int tempSum = numSecond.charAt(iSecond--) - '0' + carryValue;
if (tempSum >= 10) {
rtnResult = "0" + rtnResult;
carryValue = 1;
} else {
rtnResult = tempSum + rtnResult;
carryValue = 0;
}
}
if (carryValue > 0)
rtnResult = carryValue + rtnResult;
return rtnResult;
}
/**
* 大整数相乘
*
* @param firstValue
* @param secondValue
* @return
*/
public static String BigNumMultiply(String firstValue, String secondValue) {
firstValue = firstValue.trim();
secondValue = secondValue.trim();
if (firstValue.equalsIgnoreCase("0")
|| secondValue.equalsIgnoreCase("0"))
return "0";
ArrayList<String> mutResultItems = new ArrayList<String>();// 存放单个位数字与被乘数的结果
for (int i = secondValue.length() - 1; i >= 0; i--) {
String resultItem = "";
int carryValue = 0;
int curDigit = secondValue.charAt(i) - '0';
if (curDigit == 0)
continue;
for (int j = firstValue.length() - 1; j >= 0; j--) {
int mutValue = curDigit * (firstValue.charAt(j) - '0')
+ carryValue;
carryValue = mutValue / 10;
mutValue = mutValue % 10;
resultItem = mutValue + resultItem;
}
if (carryValue > 0)
resultItem = carryValue + resultItem;
for (int k = secondValue.length() - 1 - i; k > 0; k--)// 补零,便于相加
{
resultItem = resultItem + "0";
}
mutResultItems.add(resultItem);
}
String rtnResult = "0";
for (String value : mutResultItems) {
rtnResult = BigNumPlus(value, rtnResult);
}
return rtnResult;
}
/**
* 62进制转为十进制
*
* @param sixtyTwoValue
* @return
*/
public static String ConvertSixtyTwoToDecimal(String sixtyTwoValue) {
sixtyTwoValue = sixtyTwoValue.trim();
String rtnResult = "0";
for (int i = 0; i < sixtyTwoValue.length(); i++) {
String curCharValue = ConvertCharToUInt64(sixtyTwoValue.charAt(i))
+ "";
int powerLength = sixtyTwoValue.length() - i - 1;
String powerValue = "0";
if (powerLength > 10) {
powerValue = "839299365868340224";// Convert.ToUInt64(Math.pow(62,
// 10)).ToString();
for (int j = powerLength; j > 10; j--) {
powerValue = BigNumMultiply(powerValue, "62");
}
} else {
powerValue = (long) Math.pow(62, powerLength) + "";
}
rtnResult = BigNumPlus(rtnResult,
BigNumMultiply(powerValue, curCharValue));
}
return rtnResult;
}
private static int ConvertCharToUInt64(char c) {
switch (c) {
case '0':
return 0;
case '1':
return 1;
case '2':
return 2;
case '3':
return 3;
case '4':
return 4;
case '5':
return 5;
case '6':
return 6;
case '7':
return 7;
case '8':
return 8;
case '9':
return 9;
case 'a':
return 10;
case 'b':
return 11;
case 'c':
return 12;
case 'd':
return 13;
case 'e':
return 14;
case 'f':
return 15;
case 'g':
return 16;
case 'h':
return 17;
case 'i':
return 18;
case 'j':
return 19;
case 'k':
return 20;
case 'l':
return 21;
case 'm':
return 22;
case 'n':
return 23;
case 'o':
return 24;
case 'p':
return 25;
case 'q':
return 26;
case 'r':
return 27;
case 's':
return 28;
case 't':
return 29;
case 'u':
return 30;
case 'v':
return 31;
case 'w':
return 32;
case 'x':
return 33;
case 'y':
return 34;
case 'z':
return 35;
case 'A':
return 36;
case 'B':
return 37;
case 'C':
return 38;
case 'D':
return 39;
case 'E':
return 40;
case 'F':
return 41;
case 'G':
return 42;
case 'H':
return 43;
case 'I':
return 44;
case 'J':
return 45;
case 'K':
return 46;
case 'L':
return 47;
case 'M':
return 48;
case 'N':
return 49;
case 'O':
return 50;
case 'P':
return 51;
case 'Q':
return 52;
case 'R':
return 53;
case 'S':
return 54;
case 'T':
return 55;
case 'U':
return 56;
case 'V':
return 57;
case 'W':
return 58;
case 'X':
return 59;
case 'Y':
return 60;
case 'Z':
return 61;
}
return 0;
}
static HashMap<String, SimpleDateFormat> hasSdf = null;
public static Date parseDate(String str, String format) {
if (str == null || "".equals(str)) {
return null;
}
if (hasSdf == null) {
hasSdf = new HashMap<String, SimpleDateFormat>();
}
if (!hasSdf.containsKey(format)) {
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
hasSdf.put(format, sdf);
}
try {
synchronized (hasSdf.get(format)) {
// SimpleDateFormat is not thread safe
return hasSdf.get(format).parse(str);
}
} catch (Exception pe) {
return null;
// throw new WeiboException("Unexpected format(" + str +
// ") returned from sina.com.cn");
}
}
}
分享到:
相关推荐
StringUtil工具类java学习的好东西!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...
首先,`StringUtil.cpp`和`StringUtil.h`是C++中的源代码文件和头文件,它们定义了类`StringUtil`及其成员函数。在C++中,头文件通常用于声明类、函数、常量等,而源代码文件则包含了这些声明的实现细节。在这个案例...
`StringUtil`是一个常见的Java工具类,它包含了大量用于处理字符串的方法,可以极大地简化字符串操作,提高代码的可读性和效率。在Java开发中,我们经常会遇到对字符串进行各种操作的需求,如检查空值、分割、连接、...
通过分析`stringUtil.c`源代码和`stringUtil.h`头文件,我们可以了解一些关键知识点。 1. **自定义字符串数据结构**:在C语言中,字符串通常以字符数组的形式存在。在`stringUtil.h`中,可能定义了一个名为`String`...
StringUtil.java 2100+行代码 内容丰富
自己整理的StringUtil ,字符串处理工具类,很全面的方法,对象之间的数据转换
《AS3-StringUtil:深入解析字符串处理工具类》 在ActionScript 3(AS3)中,处理字符串是一项常见的任务,而`StringUtil`类则是一个非常实用的工具,它提供了许多方便的方法来优化和简化字符串操作。这篇内容将...
StringUtil工具类 是对String 对象封装操作
这里提到的"ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil"是五个这样的工具包,它们分别针对数组操作、日期处理、文件操作、正则表达式匹配和字符串操作提供了一系列便利的方法。 1. **ArrayUtil**: - **...