Java之字符串工具类-yellowcong

来源:互联网 发布:装修设计效果图软件 编辑:程序博客网 时间:2024/06/01 20:10

在Java中,字符串是经常操作的一个对象,我们会有各种各样的需求,在这个自己写的字符串工具包中包含了很多方法,而且不断的在增加

字符串工具

package com.yellowcong.utils;import java.io.File;import java.math.BigInteger;import java.security.MessageDigest;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.UUID;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 这个是很久以前  13年左右 写的  最近用用改改 * @author yellowcong * @date 2016年1月3日 * */public class StringUtil {    /**     * 判断字符串是否是整数     * @param number     * @return     */    public static boolean isInteger(String number) {        boolean isNumber = false;        if (StringUtil.isNotEmpty(number)) {            isNumber = number.matches("^([1-9]\\d*)|(0)$");        }        return isNumber;    }    /**     * 判断字符串不为空     * @param str     * @return     */    public static boolean isNotEmpty(String str){        boolean isNotEmpty=false;        if(str!=null && !str.trim().equals("") && !str.trim().equalsIgnoreCase("NULL")){            isNotEmpty=true;        }        return isNotEmpty;    }    /**     * 判断字符串为空     * @param str     * @return     */    public static boolean isEmpty(String str){        return !isNotEmpty(str);    }    /**     * 将数组转成SQL认识的字符串     123,432,2312     id in('123','432','2312')     * @param ids     * @return     */    public static String arrayToStr(String[] ids) {        StringBuffer str=new StringBuffer();        for(int i=0;i<ids.length;i++){            str.append("'"+ids[i]+"',");        }        if(ids.length>0){            str.deleteCharAt(str.length()-1);        }        return str.toString();    }    /**     * 将传递过来Str转化为 数字数组     * @param str     * @return     */    public static int[] strToArray(String str){        String [] idStrs = str.split(",");        int [] ids = new int[idStrs.length];        for(int i=0;i<idStrs.length;i++){            ids[i] = Integer.parseInt(idStrs[i]);        }        return ids;    }    /**     * 给数据进行md5加密     * @param message     * @return     */    public static String md5(String message)      {        try        {          MessageDigest md = MessageDigest.getInstance("MD5");          md.update(message.getBytes());          return new BigInteger(1, md.digest()).toString(16);        }        catch (Exception e)        {          throw new RuntimeException("MD5转码失败");        }      }    /**     * 通过老文件的名称自动生成新的文件     * @param oldName      * @return     */    public static String newName(String oldName){        String [] datas = oldName.split("\\.");        String type = datas[datas.length-1];        String newName  = UUID.randomUUID().toString()+"."+type;        return newName;    }    /**     * 获取文件的类型      * @param oldName      * @return     */    public static String getFileType(String fileName){        String [] datas = fileName.split("\\.");        String type = "没有文件名";        if(datas.length >1){            type = datas[datas.length-1];        }        return type;    }    /**     * 获取文件的类型  yellowcong.txt  不获取我们文件的扩展名称     * .xx 这种类型的我们设定文件名为空     * @param fileName     * @return     */    public static String getFileSimpleName(String fileName){        String [] datas = fileName.split("\\.");        String simpleName = "";        StringBuffer buff = null;        if(datas.length >1){            buff = new StringBuffer();            //遍历数据 ,解决  有 xx.xx .xx的文件             for(int i=0;i<datas.length-1;i++){                buff.append(datas[i]+".");            }            simpleName = buff.substring(0,buff.length()-1).toString();        }        return simpleName.length()==0?fileName:simpleName;    }    /**2016年1月3号     * 通过给定文件夹的访问的路径 然后获取我们的文件名称     * E:\学习\服务器学习\Nginx\nginx-1.4.7\nginx     * 这个情况下我们获取到的文件扩展名称是.7\nginx  我们需要去掉path     * 获取文件名称     * @param filePathName     * @return     */    public static String getFileTypeByPath(String pathname){        try {            File file = new File(pathname);            return getFileType(file.getName());        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();            System.err.println("有问题"+pathname);        }        return null;    }    /**     * 清除html中的所有的标签     * @param htmlStr     * @return     */    public static String removeHtmlTags(String htmlStr){        String textStr = "";        String scriptReg = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";        String styleReg = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";        String htmltReg = "<[^>]+>";        /**         * 定义html页面中的匹配起         */        Pattern script = Pattern.compile(scriptReg,Pattern.CASE_INSENSITIVE);        textStr = script.matcher(htmlStr).replaceAll("");        Pattern style =Pattern.compile(styleReg,Pattern.CASE_INSENSITIVE);        textStr = style.matcher(textStr).replaceAll("");        Pattern html =Pattern.compile(htmltReg,Pattern.CASE_INSENSITIVE);;        textStr = html.matcher(textStr).replaceAll("");        return textStr;    }    /**     * 移除字符串中的 回车、换行、空格、制表符     * @param htmlStr html 的字符串     * @return     */    public static String removeBlank(String htmlStr){        String textStr = "";        String blankReg = "\\s*|\t\r\n";        textStr = Pattern.compile(blankReg, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");        return textStr;    }    /**     * 判断我们的数据 中,是否有中文字符     * @param str     * @return     */    public static boolean isChineseChar(String str){        boolean flag = false;        Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]");        if(pattern.matcher(str).find()){            flag = true;        }        return flag;    }    /**     * 解决目录空格的问题     * @param filePath     * @return     */    public static String newPath(String filePath){        if(filePath.contains("%20")){            filePath = filePath.replace("%20", " ");        }        return filePath;    }    /**     * 给定最大值和 生成的数组个数 就会返回一个数组对象     * @param size  生成的数组大小     * @param max  最大值     * @return     */    public static int[] randomInt(int size,int max){        int[] intRet = new int[size];        int intRd = 0; //存放随机数        int count = 0; //记录生成的随机数个数        int flag = 0; //是否已经生成过标志        Random random = new Random();        while(count<size){             //产生随机数             intRd = random.nextInt(max);             //判断是否相等             for(int i=0;i<count;i++){                     if(intRet[i]==intRd){                         flag = 1;                         break;                     }else{                         flag = 0;                     }                 }                 if(flag==0){                     intRet[count] = intRd;                     count++;                 }        }        return intRet;    }    /**     * 判断是否是email     */    public static boolean isEmail(String email){        String ATOM = "[^\\x00-\\x1F^\\(^\\)^\\<^\\>^\\@^\\,^\\;^\\:^\\\\^\\\"^\\.^\\[^\\]^\\s]";        String DOMAIN = "(" + ATOM + "+(\\." + ATOM + "+)*";        String IP_DOMAIN = "\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]";        Pattern pattern =  Pattern.compile("^" + ATOM + "+(\\." + ATOM + "+)*@"                + DOMAIN + "|" + IP_DOMAIN + ")$", 2);        return pattern.matcher(email).matches();            }    /**     * 判断是否是手机号     * @param phone      * @return     */    public static boolean isPhone(String phone){        String regex = "1[3,5,8][0-9]{9}+";        Pattern pattern  = Pattern.compile(regex);        return pattern.matcher(phone).matches();    }    /**     * 判断传递过来的字符串是否是ip     * @param str 传递过来的字符串     * @return     */    public static boolean isIp(String str){        boolean flag = false;        if(str.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")){            flag = true;        }        //"".equalsIgnoreCase(anotherString)        return flag;    }    /**     * 去掉带有Emoji的文字 ,否则数据库会报错, 就是 一串 表情的符号,需要设定数据库支持才可以用     * @param str     * @return     */    public static String removeNonBmpUnicode(String str) {               if (str == null) {                   return null;               }               str = str.replaceAll("[^\\u0000-\\uFFFF]", "");              return str;        }     /**     * 移除 xml文件中的bom 数据问题,对于 有bom,导致文档的解析有问题     * utf-8 编码     * @param content     * @return     */    public static String removeBom(String content){        String result = null;        try {            byte [] dates = content.getBytes("UTF-8");            result = new String(dates,3,dates.length-3,"UTF-8");        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return result;    }    /**     * 获取电脑的CPU 的个数来定义线程的数量     */    public static int getCpuCount(){        int cpuCount = Runtime.getRuntime().availableProcessors();        return cpuCount;    }    /**     * 获取http提交的图片, 其中这个方法的出现,需要保证我们的路径中,设定的path 的文件名称 没有  /     * @param str     * @return     */    public static String getHttpImageName(String str){        String [] data = str.split("/");        str = data[data.length -1];        return str;    }    /**     * 获取HTml中的图片数据     * @param htmlStr     * @return     */    public static List<String> getHtmlImages(String htmlStr){        List<String> list = new ArrayList<String>();        String reg = "<\\s*img(.+?)src=[\"'](.+?)[\"']\\s*/?\\s*>";        Pattern pattern = Pattern.compile(reg);        Matcher matcher = pattern.matcher(htmlStr);        while(matcher.find()){            //获取图片地址 url            list.add(matcher.group(2).split("\"")[0]);        }        return list;    }    /**     * 获取一张图片     */    public static String getHtmlImage(String htmlStr){        List<String> list= getHtmlImages(htmlStr);        String result = "";        if(list != null && list.size() ==  1){            result = list.get(0);        }        return result;    }}
原创粉丝点击