StringUtils 开发中常用的字符串格式

来源:互联网 发布:ios11智能拨号软件 编辑:程序博客网 时间:2024/04/28 16:19
import java.io.UnsupportedEncodingException;
002import java.security.MessageDigest;
003import java.security.NoSuchAlgorithmException;
004import java.text.ParseException;
005import java.text.SimpleDateFormat;
006import java.util.Date;
007import java.util.regex.Pattern;
008 
009import android.app.Activity;
010import android.content.Context;
011import android.content.pm.ApplicationInfo;
012import android.content.pm.PackageManager;
013import android.content.pm.PackageManager.NameNotFoundException;
014import android.os.Bundle;
015import android.telephony.TelephonyManager;
016 
017/**
018 * 字符串操作工具包
019 */
020public class StringUtils {
021    private final static Pattern emailer = Pattern
022            .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
023    private final static Pattern phone = Pattern
024            .compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
025 
026    private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
027        @Override
028        protected SimpleDateFormat initialValue() {
029            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
030        }
031    };
032 
033    private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
034        @Override
035        protected SimpleDateFormat initialValue() {
036            return new SimpleDateFormat("yyyy-MM-dd");
037        }
038    };
039 
040    /**
041     * 返回当前系统时间
042     */
043    public static String getDataTime(String format) {
044        SimpleDateFormat df = new SimpleDateFormat(format);
045        return df.format(new Date());
046    }
047 
048    /**
049     * 返回当前系统时间
050     */
051    public static String getDataTime() {
052        return getDataTime("HH:mm");
053    }
054 
055    /**
056     * 毫秒值转换为mm:ss
057     
058     * @author kymjs
059     * @param ms
060     */
061    public static String timeFormat(int ms) {
062        StringBuilder time = new StringBuilder();
063        time.delete(0, time.length());
064        ms /= 1000;
065        int s = ms % 60;
066        int min = ms / 60;
067        if (min < 10) {
068            time.append(0);
069        }
070        time.append(min).append(":");
071        if (s < 10) {
072            time.append(0);
073        }
074        time.append(s);
075        return time.toString();
076    }
077 
078    /**
079     * 将字符串转位日期类型
080     
081     * @return
082     */
083    public static Date toDate(String sdate) {
084        try {
085            return dateFormater.get().parse(sdate);
086        catch (ParseException e) {
087            return null;
088        }
089    }
090 
091    /**
092     * 判断给定字符串时间是否为今日
093     
094     * @param sdate
095     * @return boolean
096     */
097    public static boolean isToday(String sdate) {
098        boolean b = false;
099        Date time = toDate(sdate);
100        Date today = new Date();
101        if (time != null) {
102            String nowDate = dateFormater2.get().format(today);
103            String timeDate = dateFormater2.get().format(time);
104            if (nowDate.equals(timeDate)) {
105                b = true;
106            }
107        }
108        return b;
109    }
110 
111    /**
112     * 判断给定字符串是否空白串 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串,返回true
113     */
114    public static boolean isEmpty(String input) {
115        if (input == null || "".equals(input))
116            return true;
117 
118        for (int i = 0; i < input.length(); i++) {
119            char c = input.charAt(i);
120            if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
121                return false;
122            }
123        }
124        return true;
125    }
126 
127    /**
128     * 判断是不是一个合法的电子邮件地址
129     */
130    public static boolean isEmail(String email) {
131        if (email == null || email.trim().length() == 0)
132            return false;
133        return emailer.matcher(email).matches();
134    }
135 
136    /**
137     * 判断是不是一个合法的手机号码
138     */
139    public static boolean isPhone(String phoneNum) {
140        if (phoneNum == null || phoneNum.trim().length() == 0)
141            return false;
142        return phone.matcher(phoneNum).matches();
143    }
144 
145    /**
146     * 字符串转整数
147     
148     * @param str
149     * @param defValue
150     * @return
151     */
152    public static int toInt(String str, int defValue) {
153        try {
154            return Integer.parseInt(str);
155        catch (Exception e) {
156        }
157        return defValue;
158    }
159 
160    /**
161     * 对象转整
162     
163     * @param obj
164     * @return 转换异常返回 0
165     */
166    public static int toInt(Object obj) {
167        if (obj == null)
168            return 0;
169        return toInt(obj.toString(), 0);
170    }
171 
172    /**
173     * String转long
174     
175     * @param obj
176     * @return 转换异常返回 0
177     */
178    public static long toLong(String obj) {
179        try {
180            return Long.parseLong(obj);
181        catch (Exception e) {
182        }
183        return 0;
184    }
185 
186    /**
187     * String转double
188     
189     * @param obj
190     * @return 转换异常返回 0
191     */
192    public static double toDouble(String obj) {
193        try {
194            return Double.parseDouble(obj);
195        catch (Exception e) {
196        }
197        return 0D;
198    }
199 
200    /**
201     * 字符串转布尔
202     
203     * @param b
204     * @return 转换异常返回 false
205     */
206    public static boolean toBool(String b) {
207        try {
208            return Boolean.parseBoolean(b);
209        catch (Exception e) {
210        }
211        return false;
212    }
213 
214    /**
215     * 判断一个字符串是不是数字
216     */
217    public static boolean isNumber(String str) {
218        try {
219            Integer.parseInt(str);
220        catch (Exception e) {
221            return false;
222        }
223        return true;
224    }
225 
226    /**
227     * 获取AppKey
228     */
229    public static String getMetaValue(Context context, String metaKey) {
230        Bundle metaData = null;
231        String apiKey = null;
232        if (context == null || metaKey == null) {
233            return null;
234        }
235        try {
236            ApplicationInfo ai = context.getPackageManager()
237                    .getApplicationInfo(context.getPackageName(),
238                            PackageManager.GET_META_DATA);
239            if (null != ai) {
240                metaData = ai.metaData;
241            }
242            if (null != metaData) {
243                apiKey = metaData.getString(metaKey);
244            }
245        catch (NameNotFoundException e) {
246 
247        }
248        return apiKey;
249    }
250 
251    /**
252     * 获取手机IMEI码
253     */
254    public static String getPhoneIMEI(Activity aty) {
255        TelephonyManager tm = (TelephonyManager) aty
256                .getSystemService(Activity.TELEPHONY_SERVICE);
257        return tm.getDeviceId();
258    }
259 
260    /**
261     * MD5加密
262     */
263    public static String md5(String string) {
264        byte[] hash;
265        try {
266            hash = MessageDigest.getInstance("MD5").digest(
267                    string.getBytes("UTF-8"));
268        catch (NoSuchAlgorithmException e) {
269            throw new RuntimeException("Huh, MD5 should be supported?", e);
270        catch (UnsupportedEncodingException e) {
271            throw new RuntimeException("Huh, UTF-8 should be supported?", e);
272        }
273 
274        StringBuilder hex = new StringBuilder(hash.length * 2);
275        for (byte b : hash) {
276            if ((b & 0xFF) < 0x10)
277                hex.append("0");
278            hex.append(Integer.toHexString(b & 0xFF));
279        }
280        return hex.toString();
281    }
282 
283    /**
284     * KJ加密
285     */
286    public static String KJencrypt(String str) {
287        char[] cstr = str.toCharArray();
288        StringBuilder hex = new StringBuilder();
289        for (char c : cstr) {
290            hex.append((char) (c + 5));
291        }
292        return hex.toString();
293    }
294 
295    /**
296     * KJ解密
297     */
298    public static String KJdecipher(String str) {
299        char[] cstr = str.toCharArray();
300        StringBuilder hex = new StringBuilder();
301        for (char c : cstr) {
302            hex.append((char) (c - 5));
303        }
304        return hex.toString();
305    }
306}
0 0