Java String工具类StringHelper详解编程语言

主要功能是字符串与InputStream、byte数组的转换,判断手机号,判断中文、判断邮箱、判断邮编、四舍五入、取几位小数等。

代码如下:

import java.io.BufferedReader; 
import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.StringWriter; 
import java.math.BigDecimal; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
 
import android.text.TextUtils; 
 
public class StringHelper { 
 
    private static StringHelper util; 
 
    public final String[] PHONE_PREFIX = new String[] { "130", "131", "132", 
            "133", "134", "135", "136", "137", "138", "139", "150", "151", 
            "152", "153", "154", "155", "156", "157", "158", "159", "180", 
            "181", "182", "183", "184", "185", "186", "187", "188", "189" }; 
 
    public static StringHelper getInstance() { 
 
        if (util == null) { 
            util = new StringHelper(); 
 
        } 
        return util; 
 
    } 
 
    private StringHelper() { 
        super(); 
    } 
 
    /** 
     * InputStream转byte数组 
     *  
     * @param is 
     * @return 
     */ 
    public byte[] stream2Byte(InputStream is) { 
 
        byte[] in_b = null; 
        try { 
            ByteArrayOutputStream os = new ByteArrayOutputStream(); 
 
            int i = -1; 
            while ((i = is.read()) != -1) { 
                os.write(i); 
 
            } 
 
            in_b = os.toByteArray(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
        return in_b; 
 
    } 
 
    /** 
     * InputStream 转String 
     *  
     * @param is 
     * @return 
     */ 
    public String stream2String(InputStream is) { 
 
        try { 
            BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
 
            StringWriter sw = new StringWriter(); 
            int i = -1; 
            while ((i = br.read()) != -1) { 
                sw.write(i); 
            } 
            return sw.getBuffer().toString(); 
        } catch (Exception e) { 
            // TODO: handle exception 
        } 
        return null; 
 
    } 
 
    /** 
     * 字符串转InputStream 
     *  
     * @param str 
     * @return 
     */ 
    public InputStream string2Stream(String str) { 
 
        ByteArrayInputStream is = new ByteArrayInputStream(str.getBytes()); 
 
        return is; 
    } 
 
    /** 
     * byte数组转InputStream 
     *  
     * @param by 
     * @return 
     */ 
    public InputStream byte2Stream(byte[] by) { 
 
        ByteArrayInputStream stream = new ByteArrayInputStream(by); 
 
        return stream; 
    } 
 
    /** 
     * 判断是否是中文字符,只能判断部分CJK字符 
     *  
     * @param str 
     * @return 
     */ 
    public boolean isChina(String str) { 
        Pattern p = Pattern.compile("[//u4E00-//u9FBF]+"); 
        Matcher m = p.matcher(str); 
        return m.matches(); 
    } 
 
    /** 
     * 根据Unicode编码完美的判断中文汉字和符号 
     *  
     * @param c 
     * @return 
     */ 
    private 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.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B 
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION 
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS 
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) { 
            return true; 
        } 
        return false; 
    } 
 
    /** 
     * 判断是否包含中文汉字 
     *  
     * @param strName 
     * @return 
     */ 
    public boolean isChineseHave(String strName) { 
        char[] ch = strName.toCharArray(); 
        for (int i = 0; i < ch.length; i++) { 
            char c = ch[i]; 
            if (isChinese(c)) { 
                return true; 
            } 
        } 
        return false; 
    } 
 
    /** 
     * 判断是否只有中文汉字 
     *  
     * @param strName 
     * @return 
     */ 
    public boolean isChineseAll(String strName) { 
        char[] ch = strName.toCharArray(); 
        for (int i = 0; i < ch.length; i++) { 
            char c = ch[i]; 
            if (!isChinese(c)) { 
                return false; 
            } 
        } 
        return true; 
    } 
 
    /** 
     * 判断邮政编码 
     *  
     * @param str 
     * @return 
     */ 
    public boolean isCard(String str) { 
        Pattern p = Pattern.compile("[1-9]//d{5}(?!//d)"); 
        Matcher m = p.matcher(str); 
        return m.matches(); 
    } 
 
    /** 
     * 检测邮箱合法性 
     *  
     * @param email 
     * @return 
     */ 
    public boolean isEmail(String email) { 
        if ((email == null) || (email.trim().length() == 0)) { 
            return false; 
        } 
        String regEx = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+//.[a-zA-Z]{2,4}$"; 
        Pattern p = Pattern.compile(regEx); 
        Matcher m = p.matcher(email.trim().toLowerCase()); 
 
        return m.find(); 
    } 
 
    /** 
     * 检查手机号码合法性 
     *  
     * @param mdn 
     * @return 
     */ 
    public boolean isPhoneNumber(String mdn, boolean checkLen) { 
        if (mdn == null || mdn.equals("")) { 
            return false; 
        } 
 
        if (mdn.startsWith("+86")) { 
            mdn = mdn.substring(3); 
        } 
        if (checkLen && mdn.length() != 11) { 
            return false; 
        } 
        boolean flag = false; 
        String p = mdn.length() > 3 ? mdn.substring(0, 3) : mdn; 
        for (int i = 0; i < PHONE_PREFIX.length; i++) { 
            if (p.equals(PHONE_PREFIX[i])) { 
                flag = true; 
                break; 
            } 
        } 
        if (!flag) { 
            return false; 
        } 
        return true; 
    } 
 
    /** 
     * 判断字符串中是否是整型数字 
     *  
     * @param str 
     * @return 
     */ 
    public boolean isInt(String str) { 
        if (!TextUtils.isEmpty(str)) { 
            return str.toString().matches("^[-]?//d+$"); 
        } 
 
        return false; 
    } 
 
    /** 
     * 字符串转整型 
     *  
     * @param str 
     * @return 
     */ 
    public int getInt(String str) { 
        if (!TextUtils.isEmpty(str)) { 
            String newValue = str.toString().replaceAll("//D+", ""); 
            if (!TextUtils.isEmpty(newValue)) { 
                return 0; 
            } 
            return Integer.parseInt(newValue); 
        } 
        return 0; 
    } 
 
    /** 
     * 判断字符串中是否是Double 
     *  
     * @param str 
     * @return 
     */ 
    public boolean isDouble(String str) { 
        if (!TextUtils.isEmpty(str)) { 
            return str.toString().matches("^//d+(//.[//d]+)?$"); 
        } 
        return false; 
    } 
 
    /** 
     * 字符串转Double 
     *  
     * @param str 
     * @return 
     */ 
    public double getDouble(String str) { 
        if (!TextUtils.isEmpty(str)) { 
            if (isDouble(str)) 
                return Double.parseDouble(str); 
            else 
                return 0.0D; 
        } 
        return 0.0D; 
    } 
 
    /** 
     * 字符串转Double,并进行四舍五入 
     *  
     * @param v 
     * @param scale 
     * @return 
     */ 
    public double getDouble(String str, int scale) { 
        Double v = getDouble(str); 
 
        return getDouble(v, scale); 
    } 
 
    /** 
     * Double进行四舍五入 
     *  
     * @param v 
     * @param scale 
     * @return 
     */ 
    public double getDouble(Double v, int scale) { 
 
        if (scale < 0) { 
            scale = 0; 
        } 
        BigDecimal b = new BigDecimal(v); 
        BigDecimal one = new BigDecimal("1"); 
        return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); 
    } 
 
    /** 
     * 得到指定位数的小数 
     * @param v 
     * @param scale 
     * @return 
     */ 
    public String getDecimals(Double v, int scale) { 
 
        return String.format("%." + String.valueOf(scale) + "f", v); 
 
    } 
    /** 
     * 得到指定位数的小数 
     * @param v 
     * @param scale 
     * @return 
     */ 
    public String getDecimals(String v, int scale) { 
 
        return getDecimals(getDouble(v), scale); 
 
    } 
 
}

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10739.html

(0)
上一篇 2021年7月19日 10:27
下一篇 2021年7月19日 10:27

相关推荐

发表回复

登录后才能评论