package com.zhimai.websocket.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 字符串操作工具类
 */
public class StringUtil {
    /**
     * 判断字符串是否为空
     * @param str
     * @return
     */
    public static boolean isNull(String str) {
        if (str == null) {
            return true;
        } else if (str.equals("")) {
            return true;
        }else if(str.equals("null")){
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断字符串是否为非空
     * @param str
     * @return
     */
    public static boolean isNotNull(String str){
        return !isNull(str);
    }

    /**
     * 字符串超过制定长度  截取字符串，拼接后缀
     * @param str
     * @param maxlength
     * @param endWith
     * @return
     */
    public String cutStringWithEnd(String str,int maxlength,String endWith){
        if (isNull(str)) {
            return "";
        }
        if(str.length()>maxlength){
            String newStr=str.substring(0,maxlength);
            return newStr+endWith;
        }else{
            return str;
        }
    }

    public static String getNotNullNumber(String numStr){
        if(isNull(numStr)){
            return "0";
        }else {
            return numStr;
        }
    }

    /**
     * MD5加密
     */
    public static String md5(String string) {
        if (isNull(string)) {
            return "";
        }
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
            byte[] bytes = md5.digest(string.getBytes());
            StringBuilder result = new StringBuilder();
            for (byte b : bytes) {
                String temp = Integer.toHexString(b & 0xff);
                if (temp.length() == 1) {
                    temp = "0" + temp;
                }
                result.append(temp);
            }
            return result.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 获取字符串占用空间长度 字符一个  汉字 两个
     * @param str
     * @return
     */
    public static int getStrSpace(String str) {
        if (str == null) {
            return 0;
        }

        return str.replaceAll("[^\\x00-\\xff]", "**").length();
    }

    /**
     * 获取 截取指定宽度 的  index
     */
    public static int getSubIndexByWidth(String content,int width){
        int index=content.length()-1;
        while(getStrSpace(content.substring(0,index))>width){
            index--;
        }
        return index;
    }

}
