package com.zcloud.util;

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


/**
 * 说明:常用工具
 * 作者:luoxiaobao
 * 官网:www.qdkjchina.com
 */
public class Tools {

	/**
	 * 随机生成六位数验证码
	 * @return
	 */
	public static int getRandomNum(){
		Random r = new Random();
		return r.nextInt(900000)+100000;//(Math.random()*(999999-100000)+100000)
	}

	/**
	 * 随机生成四位数验证码
	 * @return
	 */
	public static int getRandomNum4(){
		Random r = new Random();
		return r.nextInt(9000)+1000;
	}

	/**
	 * 检测字符串是否不为空(null,"","null")
	 * @param s
	 * @return 不为空则返回true,否则返回false
	 */
	public static boolean notEmpty(String s){
		return s!=null && !"".equals(s) && !"null".equals(s);
	}

	/**
	 * 检测字符串是否为空(null,"","null")
	 * @param s
	 * @return 为空则返回true,不否则返回false
	 */
	public static boolean isEmpty(String s){
		return s==null || "".equals(s) || "null".equals(s);
	}
	public static boolean isEmpty (Object obj) {
		return obj ==null || "".equals(obj);
	}
	/**
	 * 字符串转换为字符串数组
	 * @param str 字符串
	 * @param splitRegex 分隔符
	 * @return
	 */
	public static String[] str2StrArray(String str,String splitRegex){
		if(isEmpty(str)){
			return null;
		}
		return str.split(splitRegex);
	}

	/**
	 * 用默认的分隔符(,)将字符串转换为字符串数组
	 * @param str	字符串
	 * @return
	 */
	public static String[] str2StrArray(String str){
		return str2StrArray(str,",\\s*");
	}

	/**
	 * 验证邮箱
	 * @param email
	 * @return
	 */
	public static boolean checkEmail(String email){
		boolean flag = false;
		try{
			String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
			Pattern regex = Pattern.compile(check);
			Matcher matcher = regex.matcher(email);
			flag = matcher.matches();
		}catch(Exception e){
			flag = false;
		}
		return flag;
	}

	/**
	 * 验证手机号码
	 * @param mobiles
	 * @return
	 */
	public static boolean checkMobileNumber(String mobileNumber){
		boolean flag = false;
		try{
			Pattern regex = Pattern.compile("^(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8})|(0\\d{2}-\\d{8})|(0\\d{3}-\\d{7})$");
			Matcher matcher = regex.matcher(mobileNumber);
			flag = matcher.matches();
		}catch(Exception e){
			flag = false;
		}
		return flag;
	}

	/**
	 * 检测KEY是否正确
	 * @param paraname  传入参数
	 * @param FKEY		接收的 KEY
	 * @return 为空则返回true,不否则返回false
	 */
	public static boolean checkKey(String paraname, String FKEY){
		paraname = (null == paraname)? "":paraname;
		return MD5.md5(paraname+DateUtil.getDays()+",fh,").equals(FKEY);
	}
	/**
	 转半角的函数(DBC case)<br/><br/>
	 全角空格为12288,半角空格为32
	 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
	 * @param input 任意字符串
	 * @return 半角字符串
	 *
	 */
	public static String ToDBC(String input) {
		char[] c = input.toCharArray();
		for (int i = 0; i < c.length; i++) {
			if (c[i] == 12288) {
				//全角空格为12288,半角空格为32
				c[i] = (char) 32;
				continue;
			}
			if (c[i] > 65280 && c[i] < 65375)
				//其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
				c[i] = (char) (c[i] - 65248);
		}
		return new String(c);
	}

	public static String replaceBlank(String str) {
		String dest = "";
		if (str != null) {
			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
			Matcher m = p.matcher(str);
			dest = m.replaceAll("");
		}
		return dest;
	}
	public static String excelHandle (String string) {
		String aString = string.replaceAll(" ", "");
		aString = ToDBC(aString);
		aString = replaceBlank(aString);
		return aString;
	}
	public static String excelHandle (Object object) {
		String aString = object.toString().replaceAll(" ", "");
		aString = ToDBC(aString);
		aString = replaceBlank(aString);
		return aString;
	}
	public static void main(String[] args) {

		String aString = "	afjaisjfasjfasij	";
		String bString = "";
		bString= excelHandle(aString);
		System.out.println("bString:"+bString+".");
		System.out.println("aString:"+aString+".");
	}

	public static boolean contains(String[] array, String target) {
		for (int i = 0; i < array.length; i++) {
			if (array[i].equals(target)) {
				return true;
			}
		}
		return false;
	}
}