zoukankan      html  css  js  c++  java
  • utiles

     /**
    	 * 判断是否是邮箱
    	 * liuahang@163.com  = true
    	 * liuahang@.com  = false
    	 * liuahang163.com = false
    	 * @param email
    	 * @return
    	 */
    	public static boolean isEmail(String email) {
    		boolean flag = false;
    		if (Pattern
    				.matches(
    						"^[a-zA-Z0-9_//.//$-]{1,20}@[a-zA-Z0-9]{1,10}(//.[a-zA-Z0-9]{1,5}){1,3}$",
    						email)) {
    			return true;
    		}
    		return flag;
    	}
    
    	/**
    	 * 判断是否是手机号
    	 * 第一位必须为1
    	 * 必须为11位数字
    	 * @param mobileNo
    	 * @return
    	 */
    	public static boolean isMobileNo(String mobileNo) {
    		boolean flag = false;
    		if (Pattern.matches("^[1][0-9]{10}", mobileNo)) {
    			return true;
    		}
    		return flag;
    	}
    	
    	/**
    	 * 验证身份证号码是否合法 1、15位身份证号码组成: ddddddyymmddxxs共15位,其中:
    	 * dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。 yy为2位的年份代码,是身份证持有人的出身年份。
    	 * mm为2位的月份代码,是身份证持有人的出身月份。 dd为2位的日期代码,是身份证持有人的出身日。 这6位在一起组成了身份证持有人的出生日期。
    	 * xx为2位的顺序码,这个是随机数。 s为1位的性别代码,奇数代表男性,偶数代表女性。
    	 * 
    	 * 2、18位身份证号码组成: ddddddyyyymmddxxsp共18位,其中:
    	 * 其他部分都和15位的相同。年份代码由原来的2位升级到4位。最后一位为校验位。
    	 * 
    	 * @param idCard
    	 * @return
    	 */
    	public static boolean isIdCard(String idCard) {
    		/** 身份证号码1-17位求和权重 */
    		 int[] NUMS = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5,
    				8, 4, 2 };
    		/** 校验码结果 */
    		 char[] RESULT = { '1', '0', 'X', '9', '8', '7', '6', '5',
    				'4', '3', '2' };
    		boolean isValid = true;
    		int num = 0;
    		int sum = 0;
    		int len = idCard.length();
    		idCard = idCard.toUpperCase();
    		if (len != 15 && len != 18) { // 位数不正确
    			return false;
    		}
    		if (!Pattern.matches("[0-9]{15}|([0-9]{17}[0-9X])", idCard)) { // 格式不对
    			return false;
    		}
    		if (len == 15) { // 15位身份证规则
    			return isDate(idCard.substring(6, 12));
    		} else { // 18位身份证规则
    			if (isDate(idCard.substring(6, 14))) {
    				for (int i = 0; i < 17; i++) {
    					num = Integer.parseInt(idCard.charAt(i) + "");
    					sum += (num * NUMS[i]);
    				}
    				char c = RESULT[sum % 11];
    				if (c != idCard.charAt(17)) {
    					return false;
    				}
    			} else {
    				return false;
    			}
    		}
    		return isValid;
    	}
    	
    	
    	/**
    	 * 判断日期字符串是否是有效的日期
    	 * 
    	 * @param date
    	 *            输入日期字符串,格式yymmdd(年份后两位+月日)或yyyymmdd(年月日)
    	 * @return
    	 */
    	public static boolean isDate(String date) {
    		boolean flag = true;
    		int len = date.length();
    		String year = "";
    		String month = "";
    		String day = "";
    		if (len == 6) {
    			year = "19" + date.substring(0, 2);
    			month = date.substring(2, 4);
    			day = date.substring(4);
    		} else {
    			year = date.substring(0, 4);
    			month = date.substring(4, 6);
    			day = date.substring(6);
    		}
    		int yearNum = Integer.parseInt(year);
    		int monthNum = Integer.parseInt(month);
    		int dayNum = Integer.parseInt(day);
    
    		if (!(yearNum >= 1900 && yearNum <= Calendar.getInstance().get(Calendar.YEAR) + 1900)) {
    			return false;
    		}
    		if (!(monthNum >= 1 && monthNum <= 12)) {
    			return false;
    		}
    		if (monthNum == 4 || monthNum == 6 || monthNum == 9 || monthNum == 11) {
    			if (dayNum > 30) {// 小月天数应不大于30天
    				return false;
    			}
    		} else if (monthNum == 2) {
    			if (isLeapYear(yearNum)) {
    				if (dayNum > 29) {// 闰年二月天数应不大于29天
    					return false;
    				}
    			} else {
    				if (dayNum > 28) {// 非闰年二月天数应不大于28天
    					return false;
    				}
    			}
    		} else {
    			if (dayNum >= 318) {// 其他月份天数应不大于31天
    				return false;
    			}
    		}
    
    		return flag;
    	}
    
    	/**
    	 * 判断年份是否是闰年
    	 * 
    	 * @param yearNum
    	 *            4位年份数字
    	 * @return
    	 */
    	public static boolean isLeapYear(int year) {
    		if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	/**
    	 * 将字符串进行MD5加密
    	 * @param md5Str 需要加密的字符串
    	 * @return 经MD5加密后的字符串
    	 */
    	public static String getMD5(String md5Str) {
    		try {
    			MessageDigest md5 = MessageDigest.getInstance("MD5");
    			byte[] bytes = md5.digest(md5Str.getBytes());
    			StringBuffer sb = new StringBuffer();
    			String temp = "";
    			for (byte b : bytes) {
    				temp = Integer.toHexString(b & 0XFF);
    				sb.append(temp.length() == 1 ? "0" + temp : temp);
    			}
    			return sb.toString();
    		} catch (NoSuchAlgorithmException e) {
    			return null;
    		}
    	}
    	
    	/**
    	 * 将14位时间转换成格式:xxx-xx-xx xx:xx
    	 * @return
    	 */
    	public static String formateTradTime(String timeStr)
    	{
    		if(timeStr == null || timeStr.equals(""))
    		{
    			return "";
    		}
    		if(timeStr.length()<12)
    		{
    			return timeStr;
    		}
    		else
    		{
    			StringBuffer bf = new StringBuffer();
    		    bf.append(timeStr.substring(0, 4));
    		    bf.append("-");
    		    bf.append(timeStr.substring(4,6));
    		    bf.append("-");
    		    bf.append(timeStr.substring(6, 8));
    		    bf.append(" ");
    		    bf.append(timeStr.substring(8,10));
    		    bf.append(":");
    		    bf.append(timeStr.substring(10,12));
    			return bf.toString();
    		}
    		
    	}
    	
    	/**
    	 * 将xxx.xx格式的金额转成12位的报文格式
    	 * @param amount
    	 * @return
    	 */
    	public static String amountConverter_UI2Msg(String amount)
    	{
    		if (amount == null)
    		{
    			return null;
    		}
    
    		char[] chMessageAmount = new char[12];
    		for (int i = 0; i < chMessageAmount.length; i++)
    		{
    			chMessageAmount[i] = '0';
    		}
    
    		String[] splitAmount = splitString(amount, '.');
    
    		for (int i = 0; i < splitAmount[0].length(); i++)
    		{
    			chMessageAmount[9 - splitAmount[0].length() + 1 + i] = splitAmount[0].charAt(i);
    		}
    
    		if (splitAmount.length == 2)
    		{
    			for (int i = 0; i < splitAmount[1].length(); i++)
    		
    
    	{
    				if (i > 1)
    				{
    					break;
    				}
    				chMessageAmount[10 + i] = splitAmount[1].charAt(i);
    			}
    		}
    
    		return new String(chMessageAmount);
    	}
    	
    	/**
    	 * 将12位的报文金额转化成xxx.xx的格式
    	 * @param messageAmount
    	 * @return
    	 */
    	public static String amountConverter_Msg2UI(String messageAmount)
    	{
    		if (messageAmount == null)
    		{
    			return null;
    		}
    
    		char[] strAmount = messageAmount.toCharArray();
    		boolean isHeadZero = true;
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		for (int i = 0; i < strAmount.length; i++)
    		{
    			if (i < (strAmount.length - 3))
    			{
    				if (strAmount[i] != '0')
    				{
    					isHeadZero = false;
    				}
    				if (!isHeadZero)
    				{
    					baos.write(strAmount[i]);
    				}
    			}
    			else
    			{
    				if (i == (strAmount.length - 2))
    				{
    					baos.write('.');
    				}
    				baos.write(strAmount[i]);
    			}
    
    		}
    		return baos.toString();
    	}
    	
    	
    	/**
    	 * 拆分字符串
    	 * 
    	 * @param src
    	 *            源字符串
    	 * @param signal
    	 *            拆分依据
    	 * @return 被拆分的字符串数组
    	 */
    	public static String[] splitString(String src, char signal)
    	{
    		if (src == null)
    		{
    			return null;
    		}
    
    		Vector strings = new Vector();
    		int partIndex = 0;
    		for (int count = 0; count < src.length(); count++)
    		{
    			if (src.toCharArray()[count] == signal)
    			{
    				strings.addElement(src.substring(partIndex, count));
    				partIndex = count + 1;
    			}
    		}
    		strings.addElement(src.substring(partIndex, src.length()));
    
    	String[] splittedString = new String[strings.size()];
    		strings.copyInto(splittedString);
    
    		return splittedString;
    	}
    
    	
    
  • 相关阅读:
    NET 获取实例所表示的日期是星期几
    NET npoi 保存文件
    快速排序
    JAVA poi 合并单元格
    JAVA poi 帮助类
    JAVA 字符串编码转换
    NET npoi 合并单元值处理
    NET npoi帮助类
    Task的暂停,继续,取消
    .net ref与out之间区别
  • 原文地址:https://www.cnblogs.com/hongcha-index/p/3506440.html
Copyright © 2011-2022 走看看