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

	
原文地址:https://www.cnblogs.com/hongcha-index/p/3506440.html