package com.example.an.shoppingcartactivity; import android.annotation.SuppressLint; import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log; import java.io.UnsupportedEncodingException; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Random; import java.util.TimeZone; import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtil { @SuppressWarnings("unused") private static final String TAG = StringUtil.class.getSimpleName(); public static boolean isBlank(String value) { return value == null || value.trim().length() <= 0; } public static boolean parseBoolean(String str) { if (str != null) { return Boolean.parseBoolean(str.trim()); } return false; } public static final int GEN_UPPERCASE = 0; public static final int GEN_LOWERCASE = 1; public static final int GEN_CHINESE = 2; public static final int GEN_NUMBER = 3; /** * 空值判断 * * @param str * @return */ public static boolean isNull(String str) { if (str == null) { return true; } return str.trim().length() == 0; } /** * 对象转字符串 * * @param obj * @return */ public static String valueOf(Object obj) { if (obj == null) { return ""; } if ((obj instanceof String)) return (String) obj; if ((obj instanceof Object[])) return join((Object[]) obj, ","); if ((obj instanceof String[])) return join((String[]) obj, ","); if ((obj instanceof double[])) return join((double[]) obj, ","); if ((obj instanceof long[])) return join((long[]) obj, ","); if ((obj instanceof float[])) return join((float[]) obj, ","); if ((obj instanceof int[])) return join((int[]) obj, ","); if ((obj instanceof short[])) return join((short[]) obj, ","); if ((obj instanceof byte[])) { return join((byte[]) obj, ","); } return String.valueOf(obj); } /** * 字符串转整形 * * @param str * @return */ public static Integer getInt(String str) { try { return Integer.valueOf(Integer.parseInt(str.trim())); } catch (Exception ex) { } return null; } /** * 时间戳转字符串 * * @param str * @param format * @return */ public static String getTime(long timeMillis, String format) { try { return new SimpleDateFormat(format, Locale.getDefault()) .format(timeMillis - TimeZone.getDefault().getRawOffset()); } catch (Exception ex) { } return null; } /** * 字符串转整形数组 * * @param str * @param spliter * @return */ public static Integer[] getIntArray(String str, String spliter) { if (isNull(str)) { return new Integer[0]; } String[] strs = str.split(spliter); List<Integer> tmp = new ArrayList<Integer>(); for (int i = 0; i < strs.length; i++) { Integer val = getInt(strs[i]); if (val != null) tmp.add(val); } return (Integer[]) tmp.toArray(new Integer[tmp.size()]); } /** * 字符串转long型 * * @param str * @return */ public static Long getLong(String str) { try { return Long.valueOf(Long.parseLong(str.trim())); } catch (Exception ex) { } return null; } public static Long[] getLongArray(String str, String spliter) { if (isNull(str)) { return new Long[0]; } String[] strs = str.split(spliter); List<Long> tmp = new ArrayList<Long>(); for (int i = 0; i < strs.length; i++) { Long val = getLong(strs[i]); if (val != null) tmp.add(val); } return (Long[]) tmp.toArray(new Long[tmp.size()]); } /** * 字符串转布尔类型 * * @param str * @return */ public static Boolean getBoolean(String str) { try { return Boolean.valueOf(Boolean.parseBoolean(str.trim())); } catch (Exception ex) { } return null; } public static Boolean[] getBooleanArray(String str, String spliter) { if (isNull(str)) { return new Boolean[0]; } String[] strs = str.split(spliter); List<Boolean> tmp = new ArrayList<Boolean>(); for (int i = 0; i < strs.length; i++) { Boolean val = getBoolean(strs[i]); if (val != null) tmp.add(val); } return (Boolean[]) tmp.toArray(new Boolean[tmp.size()]); } public static Float getFloat(String str) { try { return Float.valueOf(Float.parseFloat(str.trim())); } catch (Exception ex) { } return null; } public static Float[] getFloatArray(String str, String spliter) { if (isNull(str)) { return new Float[0]; } String[] strs = str.split(spliter); List<Float> tmp = new ArrayList<Float>(); for (int i = 0; i < strs.length; i++) { Float val = getFloat(strs[i]); if (val != null) tmp.add(val); } return (Float[]) tmp.toArray(new Float[tmp.size()]); } public static Double getDouble(String str) { try { return Double.valueOf(Double.parseDouble(str.trim())); } catch (Exception ex) { } return null; } public static Double[] getDouble(String str, String spliter) { if (isNull(str)) { return new Double[0]; } String[] strs = str.split(spliter); List<Double> tmp = new ArrayList<Double>(); for (int i = 0; i < strs.length; i++) { Double val = getDouble(strs[i]); if (val != null) tmp.add(val); } return (Double[]) tmp.toArray(new Double[tmp.size()]); } /** * 字符串转日期 * * @param str * @param format * @return */ public static Date getDate(String str, String format) { try { return new SimpleDateFormat(format, Locale.getDefault()).parse(str .trim()); } catch (Exception ex) { } return null; } /** * 日期转字符串 * * @param str * @param format * @return */ public static String getDate(Date str, String format) { try { return new SimpleDateFormat(format, Locale.getDefault()) .format(str); } catch (Exception ex) { } return null; } /** * 日期字符串转成指定格式的日期字符串 * * @param str * @param format * @return */ public static String getDateForFormat(String str, String format) { try { Date date = new SimpleDateFormat(format, Locale.getDefault()) .parse(str.trim()); return new SimpleDateFormat(format, Locale.getDefault()) .format(date); } catch (Exception ex) { } return null; } /** * 获取日期字符串中的时分秒 * * @param str * @param format * @return */ public static String getTime(String str) { try { Date date = getDate(str, "yyyy-MM-dd HH:mm:ss"); DateFormat d3 = DateFormat.getTimeInstance(); return d3.format(date); } catch (Exception ex) { } return null; } /** * 日期(天)相加减 * * @param current * @param count * @return */ public static String dayCalculate(String current, int count) { // 日期字符串转换为date类型 Date currentDate = getDate(current, "yyyy-MM-dd"); // 获取Calendar对象 Calendar mCalendar = Calendar.getInstance(); // 设置日期为当前已经选择的时间 mCalendar.setTime(currentDate); // 进行时间相加减操作 mCalendar.add(Calendar.DAY_OF_MONTH, count); String date = StringUtil.getDate(mCalendar.getTime(), "yyyy-MM-dd"); return date; } /** * 日期(月份)相加减 * * @param current * @param count * @return */ public static String monthCalculate(String current, int count) { // 日期字符串转换为date类型 Date currentDate = getDate(current, "yyyy-MM"); // 获取Calendar对象 Calendar mCalendar = Calendar.getInstance(); // 设置日期为当前已经选择的时间 mCalendar.setTime(currentDate); // 进行时间相加减操作 mCalendar.add(Calendar.MONTH, count); String date = StringUtil.getDate(mCalendar.getTime(), "yyyy-MM"); return date; } /** * 日期大小比较 date1大于date2返回1; date1小于date2返回-1 date1等于date2返回0 * * @param date1 * @param date2 * @return */ @SuppressLint("SimpleDateFormat") public static int compareDate(String date1, String date2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date dt1 = df.parse(date1); Date dt2 = df.parse(date2); if (dt1.getTime() > dt2.getTime()) { return 1; } else if (dt1.getTime() < dt2.getTime()) { return -1; } else { return 0; } } catch (Exception exception) { exception.printStackTrace(); } return 0; } /** * 获取年月份、星期 * * @return */ public static String StringData() { String mYear, mMonth, mDay, mWay; final Calendar c = Calendar.getInstance(); c.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); mYear = String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份 mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份 mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号码 mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK)); if ("1".equals(mWay)) { mWay = "天"; } else if ("2".equals(mWay)) { mWay = "一"; } else if ("3".equals(mWay)) { mWay = "二"; } else if ("4".equals(mWay)) { mWay = "三"; } else if ("5".equals(mWay)) { mWay = "四"; } else if ("6".equals(mWay)) { mWay = "五"; } else if ("7".equals(mWay)) { mWay = "六"; } return mYear + "年" + mMonth + "月" + mDay + "日" + "/星期" + mWay; } /** * 获取星期 * * @return */ public static String getDayOfWeek() { String mWay; final Calendar c = Calendar.getInstance(); mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK)); if ("1".equals(mWay)) { mWay = "天"; } else if ("2".equals(mWay)) { mWay = "一"; } else if ("3".equals(mWay)) { mWay = "二"; } else if ("4".equals(mWay)) { mWay = "三"; } else if ("5".equals(mWay)) { mWay = "四"; } else if ("6".equals(mWay)) { mWay = "五"; } else if ("7".equals(mWay)) { mWay = "六"; } return mWay; } @SuppressLint("DefaultLocale") public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if ((c >= 0) && (c <= 'ÿ')) { sb.append(c); } else { byte[] b; try { b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { Log.e("StringUtil", ex.getMessage()); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) { k += 256; } sb.append("%" + Integer.toHexString(k).toUpperCase()); } } } return sb.toString(); } public static String changeEncoding(String oldString, String oldCharset, String newCharset) { if (isNull(oldString)) { return oldString; } if (isNull(newCharset)) { return oldString; } if (oldCharset == null) { oldCharset = ""; } if (newCharset.trim().equalsIgnoreCase(oldCharset.trim())) { return oldString; } try { if (isNull(oldCharset)) { return new String(oldString.getBytes(), newCharset); } return new String(oldString.getBytes(oldCharset), newCharset); } catch (UnsupportedEncodingException uee) { Log.e("由于系统不支持编码[" + oldCharset + "]或者[" + newCharset + "],因此未能进行转换,直接返回原字符串", uee.getMessage()); } return oldString; } public static boolean matchPattern(String str, String[] patterns) { if ((str == null) || (patterns == null)) return false; for (String p : patterns) { if (matchPattern(str, p)) return true; } return false; } public static boolean matchPattern(String str, String pattern) { return pattern == null ? false : Pattern.matches(pattern, str); } public static String toUnicode(String strText) throws Exception { StringBuilder sb = new StringBuilder(); for (int i = 0; i < strText.length(); i++) { char c = strText.charAt(i); int intAsc = c; if (intAsc > 128) { sb.append("\\u" + Integer.toHexString(intAsc)); } else { sb.append(c); } } return sb.toString(); } public static String random(int length, int[] types) { return generateRandomString(types, length); } public static String generateRandomString(int[] stringTypes, int length) { int[] startChars = new int[100]; int[] endChars = new int[100]; int actLength = 0; for (int i = 0; i < stringTypes.length; i++) { if (actLength > startChars.length) break; if (stringTypes[i] == 2) { startChars[actLength] = 19968; endChars[actLength] = 40880; actLength++; } else if (stringTypes[i] == 1) { startChars[actLength] = 97; endChars[actLength] = 122; actLength++; } else if (stringTypes[i] == 0) { startChars[actLength] = 65; endChars[actLength] = 90; actLength++; } else if (stringTypes[i] == 3) { startChars[actLength] = 48; endChars[actLength] = 57; actLength++; } } Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int idx = Math.abs(random.nextInt()) % actLength; int startChar = startChars[idx]; int endChar = endChars[idx]; char randChar = (char) (Math.abs(random.nextInt()) % (endChar - startChar) + startChar); sb.append(randChar); } return sb.toString(); } public static boolean isEquals(String str1, String str2, boolean trim) { str1 = trim(str1); str2 = trim(str2); if (str1 == null) return (str2 == null) || ((str2.length() == 0) && (trim)); if (str1.length() == 0) { if (trim) { return isNull(str2); } return (str2 != null) && (str2.length() == 0); } if (trim) { return str1.equals(str2); } return str1.equals(str2); } public static String trim(String str) { if (str == null) { return str; } return str.trim(); } /** * double转字符串 0.00 * * @param str * @return 0.00 */ public static String getZeroDouble(double str) { DecimalFormat df = new DecimalFormat("0.00"); return df.format(str); } /** * double为0.00 显示 -- * * @param str * @return 0.00 */ public static String getZeroToStr(double str, String sdefault) { if (str == 0) { return sdefault; } else { DecimalFormat df = new DecimalFormat("0.00"); return df.format(str); } } public static String toTimeStr(long time, boolean showZero) { long seconds = time / 1000L; int minutes = 0; int hours = 0; int days = 0; days = (int) seconds / 86400; seconds %= 86400L; hours = (int) seconds / 3600; seconds %= 3600L; minutes = (int) seconds / 60; seconds %= 60L; String str = ""; if (days > 0) str = days + "天" + ((hours == 0) && (!showZero) ? "" : new StringBuilder( String.valueOf(hours)).append("小时").toString()) + ((minutes == 0) && (!showZero) ? "" : new StringBuilder( String.valueOf(minutes)).append("分").toString()) + ((seconds == 0L) && (!showZero) ? "" : new StringBuilder( String.valueOf(seconds)).append("秒").toString()); else if (hours > 0) str = hours + "小时" + ((minutes == 0) && (!showZero) ? "" : new StringBuilder( String.valueOf(minutes)).append("分").toString()) + ((seconds == 0L) && (!showZero) ? "" : new StringBuilder( String.valueOf(seconds)).append("秒").toString()); else if (minutes > 0) str = minutes + "分" + ((seconds == 0L) && (!showZero) ? "" : new StringBuilder( String.valueOf(seconds)).append("秒").toString()); else { str = seconds + "秒"; } return str; } // 09:08格式 public static String toTimeStrSF(long time) { long times = time / 1000L; int minutes = (int) times / 60; int seconds = (int) times - 60 * minutes; String str = ""; if (minutes > 59) { return str; } str = minutes < 10 ? ("0" + minutes + ":") : ("" + minutes + ":"); str += seconds < 10 ? ("0" + seconds) : ("" + seconds); // if(minutes<10){ // str = "0"+minutes+":"; // }else{ // str = ""+minutes+":"; // } // if(seconds<10){ // str = "0"+seconds; // }else{ // str = ""+seconds; // } return str; } @SuppressLint("DefaultLocale") public static String generateGUID() { UUID uid = UUID.randomUUID(); return uid.toString().replaceAll("-", "").toUpperCase(); } public static String join(byte[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(short[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(double[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(float[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(int[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(long[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(String[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(arr[i]); } } return sb.toString(); } public static String join(Object[] arr, String spliter) { StringBuilder sb = new StringBuilder(); if (arr != null) { for (int i = 0; i < arr.length; i++) { if (i > 0) sb.append(spliter); sb.append(valueOf(arr[i])); } } return sb.toString(); } public static int length(String str) { if (str == null) return 0; int length = 0; char[] chars = str.toCharArray(); for (char c : chars) { if (c >= '') length += 2; else { length++; } } return length; } public static String escape(String src, String pre) { if (src == null) { return null; } StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length() * 6); for (int i = 0; i < src.length(); i++) { char j = src.charAt(i); if ((Character.isDigit(j)) || (Character.isLowerCase(j)) || (Character.isUpperCase(j))) { tmp.append(j); } else if (j < 'Ā') { tmp.append(pre); if (j < '\020') tmp.append("0"); tmp.append(Integer.toString(j, 16)); } else { tmp.append(pre + "u"); tmp.append(Integer.toString(j, 16)); } } return tmp.toString(); } public static String escape(String src) { return escape(src, "%"); } public static String unescape(String src) { return unescape(src, "%"); } public static String unescape(String src, String pre) { if (src == null) // return src; return null; StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length()); int lastPos = 0; int pos = 0; while (lastPos < src.length()) { pos = src.indexOf(pre, lastPos); if (pos == lastPos) { if (src.charAt(pos + 1) == 'u') { char ch = (char) Integer.parseInt( src.substring(pos + 2, pos + 6), 16); tmp.append(ch); lastPos = pos + 6; } else { char ch = (char) Integer.parseInt( src.substring(pos + 1, pos + 3), 16); tmp.append(ch); lastPos = pos + 3; } } else if (pos == -1) { tmp.append(src.substring(lastPos)); lastPos = src.length(); } else { tmp.append(src.substring(lastPos, pos)); lastPos = pos; } } return tmp.toString(); } /** * 将字符串数组转化为用逗号连接的字符串 * * @param values * @return */ public static String arrayToString(String[] values) { String result = ""; if (values != null) { if (values.length > 0) { for (String value : values) { result += value + ","; } result = result.substring(0, result.length() - 1); } } return result; } /** * 将字符串List转换为用逗号连接的字符串 * * @param list * @return */ public static String listToString(List<String> list) { String result = ""; if (list.size() != 0) { for (int i = 0; i < list.size(); i++) { result += list.get(i) + ","; } result = result.substring(0, result.length() - 1); } return result; } public static String numberAdd(int num) { String result = ""; if (num >= 0 && num <= 9) { result = "0" + num; } else { result = "" + num; } return result; } /** * 获取年月日格式日期 * * @return */ public static String getCurrentDate() { long time = System.currentTimeMillis(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); return sf.format(new Date(time)); } /** * 获取年月日格式日期,根据根式 * * @return */ public static String getCurrentDate(String format) { long time = System.currentTimeMillis(); SimpleDateFormat sf = new SimpleDateFormat(format, Locale.getDefault()); return sf.format(new Date(time)); } public static String getCurrentTime() { long time = System.currentTimeMillis(); SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()); return sf.format(new Date(time)); } /** * 判断字符串是否为空 * * @param str * @return */ public static boolean isEmpty(String str) { return null == str || "".equals(str) || str.length() == 0 ? true : false; } /** * 判断对象是否为空 * * @param obj * @return */ public static boolean isEmpty(Object obj) { return null == obj || "" == obj ? true : false; } // 身份证号校验 public static boolean IsIDcard(String str) { String regex = "(^\\d{18}$)|(^\\d{15}$)"; return match(regex, str); } private static boolean match(String regex, String str) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); return matcher.matches(); } // 固定电话校验 public static boolean isGuDingPhone(String str) { String regex = "^0\\d{2,3}(\\-)?\\d{7,8}$"; return str.matches(regex); } // 手机号码校验 public static boolean isCellPhone(String str) { Pattern p = null; Matcher m = null; boolean b = false; p = Pattern .compile("^((13[0-9])|(14[5,7])|(15[^4,\\D])|(18[0-9]))\\d{8}$"); // 验证手机号 m = p.matcher(str); b = m.matches(); return b; } /** * 判断字符串是否为数字 * * @param str * @return */ public static boolean isNumeric(String str) { for (int i = str.length(); --i >= 0;) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } /** * 获取手机唯一标识 * * @return */ public static String getPhoneUnique(Context context) { @SuppressWarnings("static-access") TelephonyManager TelephonyMgr = (TelephonyManager) context .getSystemService(context.TELEPHONY_SERVICE); String szImei = TelephonyMgr.getDeviceId(); return szImei; } public static void main(String[] args) throws Exception { String[] strs = { "a", "b" }; System.out.println(valueOf(strs)); } /** * 获取字符第几次出现的位置 * * @param string * @param divider * @param poi * @return */ public static int getCharacterPosition(String string, String divider, int poi) { Matcher slashMatcher = Pattern.compile(divider).matcher(string); int mIdx = 0; while (slashMatcher.find()) { mIdx++; if (mIdx == poi) { break; } } return slashMatcher.start(); } /** * 传入Url地址及需要匹配的参数名 * * @param url * eg:http://www.autocarinn.com/Wap/index.aspx?province=guangdong * &mobile=13812345678 * @param paramName * eg:province * @return 参数名对应的参数值 eg:guangdong */ public static String findParamValue(String url, String paramName) { Pattern pattern = Pattern.compile("(^|&|\\?)" + paramName + "=([^&]*)(&|$)"); Matcher matcher = pattern.matcher(url); if (matcher.find()) { /** * matcher.group(0)返回?province=guangdong& matcher.group(1)返回? * matcher.group(2)返回guangdong */ return matcher.group(2); } return null; } /** * 字符串转整形 * * @param str * @param defaultValue * @return */ public static int getInt(String str, int defaultValue) { try { return Integer.valueOf(Integer.parseInt(str.trim())); } catch (Exception ex) { return defaultValue; } } public static double getDouble(String str, double defaultValue) { try { return Double.parseDouble(str.trim()); } catch (Exception ex) { return defaultValue; } } }