StringUtil.java 4.07 KB
package com.sunvote.xpadapp.utils;

import android.content.Context;
import android.text.TextPaint;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Administrator on 2017/6/5.
 */

public class StringUtil {

    //正整数、正浮点
    private  static String numRegex = "^[0-9][0-9]*$|^[0-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$";

    /**
     * 判断给定字符串是否空白串。 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串,返回true
     * @param input
     * @return boolean
     */
    public static boolean isEmpty(String input) {
        if (input == null || "".equals(input) || input.isEmpty() || "null".equals(input))
            return true;
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
                return false;
            }
        }
        return true;
    }

    private static boolean isMatch(String regex, String orginal){
        if (StringUtil.isEmpty(orginal)) {
            return false;
        }
        Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(orginal);
        return matcher.matches();
    }

    /**
     * 正整数、正浮点
     * @param orginal
     *          验证字符
     * @return
     */
    public static boolean isPositiveDecimal(String orginal)
    {
       return isMatch(numRegex,orginal);
    }

    /**
     * 判断整数位跟小数位
     * @param keyInputNum
     *          输入数
     * @param mIntNumLength
     *          整数位判断
     * @param mIntDecNumLength
     *          小数位判断
     * @return
     */
    public static  boolean isDecimal(String keyInputNum,int mIntNumLength,int mIntDecNumLength){
        boolean isOk = true;
        int intNumLength = StringUtil.getIntNumLength(keyInputNum);
        int decNumLength = StringUtil.getDecNumLength(keyInputNum);

        if(mIntNumLength == 0){ //不允许输入整数
            isOk = false;
        }else{
            if(intNumLength > mIntNumLength){
                isOk = false;
            }
        }

        if(keyInputNum.contains(".")){
            if(mIntDecNumLength == 0){ //不允许输入整数
                isOk = false;
            }else{
                if(decNumLength >mIntDecNumLength ){
                    isOk = false;
                }
            }
        }
        return isOk;
    }

    /**
     * 获取小数的整数位长度
     * @param str
     * @return
     */
    public static int getIntNumLength(String str){
        String strTemp="";
        if(str.contains(".")){
            String [] strArray=str.split(".");
            int index = str.indexOf(".");
            strTemp=str.substring(0,index);
        }else{
            strTemp=str;
        }
        return strTemp.length();
    }

    /**
     * 获取小数的小数位长度
     * @param str
     * @return
     */
    public static int getDecNumLength(String str){
        String strTemp="";
        if(str.contains(".")){
            String [] strArray=str.split(".");
            int index = str.indexOf(".");
            strTemp=str.substring(index+1,str.length());
        }
        return strTemp.length();
    }

    /**
     * 根据字节计算宽度 2个字节代表一个汉子
     * @return
     */
    public static int getMaxTextViewWidth(Context context,int length, float textSize){
        float maxTextViewWidth = 0;
        String testStr="";
        for(int i = 0; i < length;i++){
            testStr+="#";
        }
        maxTextViewWidth = measureTextViewWidth(context,testStr,textSize);
        return (int)maxTextViewWidth;
    }

    // 计算文字的长度(像素)
    public static float measureTextViewWidth(Context context, String text, float textSize) {
        TextPaint textPaint = new TextPaint();
        float mTextSize = context.getResources().getDisplayMetrics().scaledDensity;
        textPaint.setTextSize(textSize * mTextSize);
        return textPaint.measureText(text);
    }
}