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); } }