android常用的函数、判断、正则

原创 2016年06月02日 11:31:46
    /**
     * 根据经纬度来计算距离  -- 返回单位是米
     *
     * @param longitude1
     * @param latitude1
     * @param longitude2
     * @param latitude2
     * @return
     */
    public double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
        double EARTH_RADIUS = 6378137.0;
        double Lat1 = rad(latitude1);
        double Lat2 = rad(latitude2);
        double a = Lat1 - Lat2;
        double b = rad(longitude1) - rad(longitude2);
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000) / 10000;
        return s / 1000;
    }
    /**
     * 验证手机格式
     * @param mobiles
     * @return boolean
     */
    public static boolean isMobileNO(String mobiles) {
        /*
        移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
        联通:130、131、132、152、155、156、185、186
        电信:133、153、180、189、(1349卫通)
        总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
        */
        String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
        if (TextUtils.isEmpty(mobiles))
            return false;
        else
            return mobiles.matches(telRegex);
    }
    /**
     * md5加密
     *
     * @param string 加密后的字符串
     * @return
     */
    public static String md5(String string) {
        byte[] hash;
        try {
            hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("Huh, MD5 should be supported?", e);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException("Huh, UTF-8 should be supported?", e);
        }
        StringBuilder hex = new StringBuilder(hash.length * 2);
        for (byte b : hash) {
            if ((b & 0xFF) < 0x10)
                hex.append("0");
            hex.append(Integer.toHexString(b & 0xFF));
        }
        return hex.toString();
    }
    /**
     * 将汉字转换为全拼
     *
     * @param src
     * @return
     */
    public static String getPinYin(String src) {
        char[] t1 = null;
        String t4 = "";
        try {
            t1 = src.toCharArray();
            String[] t2 = new String[t1.length];
            // 设置汉字拼音输出的格式
            HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
            t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            t3.setVCharType(HanyuPinyinVCharType.WITH_V);
            int t0 = t1.length;
            try {
                for (int i = 0; i < t0; i++) {
                    // 判断能否为汉字字符
                    if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
                        t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中
                        t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
                    } else {
                        // 如果不是汉字字符,间接取出字符并连接到字符串t4后
                        t4 += Character.toString(t1[i]);
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return t4.toUpperCase();
    }
    /**
     * 判断是否是中文
     *
     * @param str
     * @return
     */
    public static boolean isChineseChar(String str) {
        boolean temp = false;
        if (str != null && str.length() > 0) {
            char[] chars = str.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
                Matcher m = p.matcher(chars[i] + "");
                if (m.find()) {
                    temp = true;
                } else {
                    temp = false;
                    break;
                }
            }
        }
        return temp;
    }
    /**
     * 判断是否是double
     * @param value
     * @return
     */
    public static boolean isBigDecimal(String value) {
        try {
            Double.parseDouble(value);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
    /**
     * 判断是否是int
     * @param value
     * @return
     */
    public static boolean isInteger(String value) {
        try {
            Integer.parseInt(value);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
    /**
     * 判断是否是数字
     * @param value
     * @return
     */
    public static boolean isNumber(String value) {
        Boolean strResult = value.matches("-?[0-9]+.*[0-9]*");
        if(strResult == true) {
            return true;//Is Number!
        } else {
            return false;//Is not Number!
        }
    }
    /**
     * 保留两位小数
     * @param value
     * @return
     */
    public static String getDecimalFormat(double value) {
        DecimalFormat df1 = new DecimalFormat("###.00"); // 保留2位小数,带前导零
        return df1.format(value);
    }
    /**
     * 检测Sdcard是否存在
     *
     * @return
     */
    public static boolean hasSdcard() {
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)) {
            return true;
        } else {
            return false;
        }
    }
     /**
     * 获取版本号
     * @param context
     * @return
     */
    public static int getAppVersionCode(Context context) {
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
            return info.versionCode;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
        return 1;
    }
    /**
     * 获取版本名称
     * @param context
     * @return
     */
    public static String getAppVersionName(Context context) {
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
            return info.versionName;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 判断当前日期是星期几
     * @param date 修要判断的时间
     * @return
     */
    public static String getWeek(Date date){
        String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if(week_index < 0){
            week_index = 0;
        }
        return weeks[week_index];
    }

相关文章推荐

常用JS正则匹配函数

//校验用户名:只能输入1-30个字母 function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec...

PHP正则常用函数

下面这些php正则常用函数是我查阅资料结合网上的例子整理出来的。1. preg_match() 函数原型:int preg_match (string $pattern, string $conten...
  • lbjcd
  • lbjcd
  • 2017年05月11日 10:34
  • 155

JS正则常用函数

1. 定义正则对象JS有两种定义正则对象的方式,一种是构造函数方式,另一种是字面量方式。 - 1). 构造函数方式var reg = new RegExp("[a-z]+", "gi");这里,第一...
  • lbjcd
  • lbjcd
  • 2017年05月11日 14:02
  • 122

PHP常用字符串正则替换及剖分函数比较

本文介绍PHP常用正则匹配函数间的区别,主要有str_replace、str_ireplace、substr_replace、 preg_replace、preg_match、preg_match_a...
  • yfgcq
  • yfgcq
  • 2011年07月25日 11:24
  • 322

常用的Javascript表单正则验证函数

/** * 传入一个input对象,自动检测里面的值 */ function CheckInput(){ this.checkLength=function(obj,len) { ...

php常用函数-正则

@php常用函数-正则 php 正则 常用正则函数 preg_filter() 执行一个正则表达式搜索和替换 $subject = array('1', 'a', '2...

Android常用正则工具类

此类提供日常开发中常用的正则验证函数,比如:邮箱、手机号、电话号码、身份证号码、日期、数字、小数、URL、IP地址等。使用Pattern对象的matches方法进行整个字符匹配,调用该方法相当于: ...
  • lhb_11
  • lhb_11
  • 2017年06月24日 17:27
  • 109

Android常用正则工具类

此类提供日常开发中常用的正则验证函数,比如:邮箱、手机号、电话号码、身份证号码、日期、数字、小数、URL、IP地址等。使用Pattern对象的matches方法进行整个字符匹配,调用该方法相当于: ...

android常用正则工具类

此类提供日常开发中常用的正则验证函数,比如:邮箱、手机号、电话号码、身份证号码、日期、数字、小数、URL、IP地址等。使用Pattern对象的matches方法进行整个字符匹配...

Android正则表达式----常用正则积累

前言有一定开发经验的同学一定都知道正则表达式是什么,也知道它的用处与强大之处,这里就不过多的说了。强大归强大,但是用到的却往往是边边角角的地方,例如电话号码的验证、邮箱的验证等等这些小地方,不过每个应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android常用的函数、判断、正则
举报原因:
原因补充:

(最多只允许输入30个字)