StringUtils工具类

package com.xiangshui;


import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/**
 * 字符串处理类
 * @author liuqixiang
 * @version 1.0 2018-09-07
 */
public class StringUtils {
     public static final String[] EMPTY_STRING_ARRAY = new String[0];
    /**
     * 判断字符串是否为全数字,如果为全数字返回true
     * @author liuqixiang
     * @param 参数1:待判断字符串
     * @return boolean
     * @version 1.0 2018-09-07
     **/
    public static boolean isAllNumber(String str){
        if(str!=""){
            for (int i=0; i<str.length(); i++) { 
                char c = str.charAt(i); 
                if (c<'0' || '9'<c) { 
                    return false; 
                } 
            }
            return true;
        }else{
            return false;
        }
    }
    /**
     * 判断字符串是否为全中文
     * @author liuqixiang
     * @param 参数1:待判断字符串
     * @return boolean
     * @version 1.0 2018-09-07
     */
    public static boolean isAllChinese(String str){
        if(str!=""){
            char[] c=str.toCharArray();
            for (int i = 0; i < c.length; i++) {
                Character.UnicodeBlock ub = Character.UnicodeBlock.of(c[i]);
                 if (ub != Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS 
                            && ub != Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS 
                            && ub != Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A 
                            && ub != Character.UnicodeBlock.GENERAL_PUNCTUATION 
                            && ub != Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION 
                            && ub != Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { 
                        return false; 
                    } 
            }
            return true;
        }else{
            return false;
        }
    }
    /**
     * 判断第一个字符窜中包含第二个字符串的数量
     * @author liuqixiang
     * @param 参数1:待判断字符串;参数2:包含的字符串
     * @return int
     * @version 1.0 2018-09-07
     */
    public static int hasStrCount(String str1, String str2) {
        int sum = 0;
        if(StringUtils.isNull(str2)){
            return 0;
        }
        while (str1.indexOf(str2) != -1) {
            sum++;
            str1 = str1.substring(str1.indexOf(str2) + str2.length());
        }
        return sum;
    }
    /**
     * 将一个String[]中的某个字符串移到数组的末尾
     * @author liuqixiang
     * @param 参数1:待操作字符串数组;参数2:待移动的字符串
     * @return String[]
     * @version 1.0 2018-09-07
     */
    public static String[] moveToEnd(String[] sources, String str) {
        int head = 0;
        int end = sources.length - 1;
        while (head != end) {
            while (head != end) {
                if (sources[head].equals(str))
                    break;
                head++;
            }
            while (head != end) {
                if (!sources[end].equals(str))
                    break;
                end--;
            }
            if (head != end) {
                String temp = sources[head];
                sources[head] = sources[end];
                sources[end] = temp;
            }
        }
        return sources;
    }
    /**
     * 删除String[]中的某个字符串
     * @author liuqixiang
     * @param 参数1:待操作字符串数组;参数2:待删除的字符串
     * @return String[]
     * @version 1.0 2018-09-07
     */
    public static String[] delstr(String[] sources, String str) {
        sources = moveToEnd(sources, str);
        int size = 0;
        for (; size < sources.length; size++) {
            if (sources[size].equals(str))
                break;
        }
        String[] temp = new String[size];
        for (int i = 0; i < size; i++)
            temp[i] = sources[i];
        return temp;
    }
    /**
     * 将String[]转化为int[]
     * @author liuqixiang
     * @param 参数1:待操作的字符串数组
     * @return int[]
     * @version 1.0 2018-09-07
     */
    public static int[] pareInts(String[] sources) {
        int[] temp = new int[sources.length];
        for (int i = 0; i < sources.length; i++) {
            temp[i] = Integer.parseInt(sources[i]);
        }
        return temp;
    }
    /**
     * 将int[]转化为String[]
     * @author liuqixiang
     * @param 参数1:待操作的字符串数组
     * @return int[]
     * @version 1.0 2018-09-07
     */
    public static String[] pareStrings(int[] sources) {
        String[] temp = new String[sources.length];
        for (int i = 0; i < sources.length; i++) {
            temp[i] = sources[i]+"";
        }
        return temp;
    }
    /**
     * 获取第二个字符串在第一个字符串中出现位置的索引值
     * @param str1
     * @param str2
     * @return List
     */
    public static List indexOf(String str1,String str2){
        int len=str1.length();
        int dd=0;
        List list=new ArrayList();
        int count=hasStrCount(str1, str2);
        for (int i = 0; i <count; i++) {
            int index=str1.indexOf(str2)+dd;
            list.add(index);
            str1=str1.substring(str1.indexOf(str2)+1);
            dd=len-str1.length();
        }
        return list;
    }
    /**
     * 截取字符窜到指定字符窜,例如截取"qwertyuio"到'e'字符,结果为qwe
     * @author liuqixiang
     * @param 参数1:待截取的字符串;参数2:截取位置;参数3:位置序号;参数4:是否包含截取位置
     * @return String
     * @version 1.0 2018-09-07
     */
    public static String subString(String str1, String str2,int sqe,int type) {
        String restr="";
        List list=indexOf(str1, str2);
        int xhsize=0;
        if(list.size()<sqe||sqe<1){
            return "";
        }else{
            xhsize=sqe;
        }
        restr=str1.substring(0, (Integer)list.get(xhsize-1));
        if(type==1){
            restr+=str2;
        }
        return restr;
    }
    /**
     *去除字符窜多余的空格
     * @author liuqixiang
     * @param 参数1:待处理的字符串;参数2:处理类型,1表示去除左边的空格,2表示
     * 去除右边的空格,3表示去除两边的空格,4表示去除所有空格
     * @return String
     * @version 1.0 2018-09-07
     */
    public static String delNull(String str,String type) {
        if(type.equals("1")){
            return delLeftNull(str);
        }else if(type.equals("2")){
            return delRightNull(str);
        }else if(type.equals("3")){
            return str.trim();
        }else{
            return str.replaceAll(" ", "");
        }
    }
    /**
     *将int型转换为指定长度的字符串,不够位数前面添零
     * @author liuqixiang
     * @param 参数1:待处理的数字;参数2:位数
     * @return String
     * @version 1.0 2018-09-07
     */
    public static String toString(int value, int median) {
        String result = "";
        String valueString = String.valueOf(value);
        int valueMedian = valueString.length();
        if(valueMedian < median) {
            for(int i = 0, c = median - valueMedian; i < c; i++) {
                result = result + "0";
            }
            result = result + valueString;
        } else {
            result = valueString;
        }
        return result;
    }
    /**
     *判断字符窜数组中是否包含指定字符串
     * @author liuqixiang
     * @param 参数1:待操作的字符串数组;参数2:包含的字符串;参数3:是否大小写敏感
     * @return boolean
     * @version 1.0 2018-09-07
     */
    public static boolean isContain(String[] strings, String string,
            boolean caseSensitive) {
        for (int i = 0; i < strings.length; i++) {
            if (caseSensitive == true) {
                if (strings[i].equals(string)) {
                    return true;
                }
            }
            else {
                if (strings[i].equalsIgnoreCase(string)) {
                    return true;
                }
            }
        }
        return false;
    }
    /**
     *将字符串数组使用指定的分隔符合并成一个字符串。
     * @author liuqixiang
     * @param 参数1:待操作的字符串数组;参数2:表示分隔符,为null的时候使用""作为分隔符(即没有分隔符)
     * @return String
     * @version 1.0 2018-09-07
     */
    public static String toString(String[] array, String delim) {
        int length = array.length - 1;
        if (delim == null) {
          delim = "";
        }
        StringBuffer result = new StringBuffer(length * 8);
        for (int i = 0; i < length; i++) {
          result.append(array[i]);
          result.append(delim);
        }
        result.append(array[length]);
        return result.toString();
      }
    /**
     *替换String中所有的指定字符串为指定的新字符窜
     * @author liuqixiang
     * @param 参数1:待操作的字符串;参数2:需替换的字符窜;参数3:用作替换的新字符窜
     * @return String
     * @version 1.0 2018-09-07
     */
     public static String replaceAll(String str0,String str1,String str2)
       {
           if(str0==null || str0.equals("")) return str0;
             if(str1==null || str1.equals("")) str1=" ";
           String s="";
           try
           {
               while(str0.indexOf(str1)!=-1)
               {
                   s+=str0.substring(0,str0.indexOf(str1))+str2;
                   str2=str2.trim();
                   str0=str0.substring(str0.indexOf(str1)+str1.length());
               }
               s+=str0;
           }catch(Exception e)
           {
               e.printStackTrace();
           }
           if(s.equals(""))
               s=str0;
           return s;
       }
     /**
      * 验证字符窜是否为ip格式
      * @author liuqixiang
      * @param 参数1:待验证的字符串;
      * @return boolean
      * @version 1.0 2018-09-07
     */
     public static boolean isIp(String strIp){
            boolean bln=true;
            String[] str=strIp.split("\\.");
            String s=toString(str, "");
            if(isAllNumber(s)){
            try {
                StringTokenizer st = new StringTokenizer(strIp,".");
                int intCount=st.countTokens();
                while (st.hasMoreTokens()) {
                    String strTemp=st.nextToken();

                    try {
                        int intTemp = Integer.parseInt(strTemp);
                        if (intTemp > 255 || intTemp < 0) {
                            bln = false;
                        }
                    }
                    catch (NumberFormatException ex) {
                        ex.printStackTrace();
                        bln = false;
                    }
                }
                if(intCount!=4) bln = false;
            }
            catch (Exception ex) {
                ex.printStackTrace();
            }
            return bln;
            }else{
                return false;
            }
        }
     /**
         *验证字符窜是否为URL格式
         * @author liuqixiang
         * @param 参数1:待验证的字符串;
         * @return boolean
         * @version 1.0 2018-09-07
         */
     public static boolean isUrl(String strUrl){
            try {
                URL test = new URL(strUrl);
                return true;
            } catch (MalformedURLException mue) {
                return false;
            }
        }
     /**
         *去除字符窜左边多余的空格
         * @author liuqixiang
         * @param String
         * @return String
         * @version 1.0 2018-09-07
         */
        public static String delLeftNull(String str) {
            char[] c = str.toCharArray();
            for (int i = 0; i < c.length; i++) {
                if (c[i] != ' ') {
                    str = String.valueOf(c, i, c.length - i);
                    break;
                }
            }
            return str;
        }
        /**
         *去除字符窜右边多余的空格
         * @author liuqixiang
         * @param String
         * @return String
         * @version 1.0 2018-09-07
         */
        public static String delRightNull(String value) {
            String result = value;
            if(result == null) return result;
            char ch[] = result.toCharArray();
            int endIndex = -1;
            for(int i=ch.length-1; i > -1; i--) {
              if(Character.isWhitespace(ch[i])) {
                endIndex = i;
              }
              else {
                break;
              }
            }
            if(endIndex != -1) {
              result = result.substring(0, endIndex);
            }
            return result;
          }
        /**
         * 字符串大小写转换
         * @param str
         * @param type
         * @return
         */
        public static String shift(String str,int type){
            if(type==1){
                str=toBigString(str);
            }else if(type==2){
                str=toSmallString(str);
            }else{
                str=shiftBigOrSmall(str);
            }
            return str;
        }
        /**
         * 字母大小写互转
         * @param str
         * @return
         */
        public static String shiftBigOrSmall(String str) {
            int size = str.length();
            char[] chs = str.toCharArray();
            for (int i = 0; i < size; i++) {
                if (chs[i] <= 'Z' && chs[i] >= 'A') {
                    chs[i] = (char) (chs[i] + 32);
                } else if (chs[i] <= 'z' && chs[i] >= 'a') {
                    chs[i] = (char) (chs[i] - 32);
                }
            }
            return new String(chs);
        }
        /**
         * 将字符转换为大写字符串
         * @param str
         * @return
         */
        public static String toBigString(String str){
            int size = str.length();
            char[] chs = str.toCharArray();
            for (int i = 0; i < size; i++) {
                if (chs[i] <= 'z' && chs[i] >= 'a') {
                    chs[i] = (char) (chs[i] - 32);
                }
            }
            return new String(chs);
        }
        /**
         * 将字符转换为小写字符串
         * @param str
         * @return
         */
        public static String toSmallString(String str){
            int size = str.length();
            char[] chs = str.toCharArray();
            for (int i = 0; i < size; i++) {
                if (chs[i] <= 'Z' && chs[i] >= 'A') {
                    chs[i] = (char) (chs[i] + 32);
                }
            }
            return new String(chs);
        }
        /**
         * 判断字符串是否为空 为空返回true
         * @param str
         * @return
         */
        public static boolean isNull(String str){
            if(str==null||"null".equals(str)||"NULL".equals(str)){
                return true;
            }else{
                str=delNull(str, "4");
                if("".equals(str)){
                    return true;
                }else{
                    return false;
                }
            }
        }
        public static String toNotNullStr(Object str){
                return str==null?"":str.toString();
        }
        
        public static String strToNull(String str){
            return "".equals(str)?null:str;
      }
        /**
         * 获取字符串的字节长度
         * @param str
         * @return
         */
        public static int getByteLength(String str){
            if(!isNull(str)){
                String str2=str.replaceAll("[^\\x00-\\xff]","**");
                int len=str2.length();
                return len;
            }else{
                return 0;
            }
        }
        
        /**
         * 对字符串数组判断是否越界
         * @param str
         * @return
         */
        public static String getArrayValue (String[] StrArr,int index){
               if (StrArr==null) return "";
               int len = StrArr.length;
               if(index<len)return StrArr[index];
                return "";
        }
        
        /**
         * 数字转换为字符串,当为0时返回空
         * @param str
         * @return
         */
        public static String tranNumToString (int num){
            String returnStr ="";
            returnStr=toNotNullStr(num);
            return ("0".equals(returnStr))?returnStr="":returnStr;
        }
        public static String toLong(String str, int len){
            if(isNull(str)){
                str="";
            }
            int ln=str.getBytes().length;
            int bl=(len-ln)/2;
            for (int i = 0; i <bl; i++) {
                str=" "+str;
            }
            return str;
        }
        /**
         * 制定长度插入间隔符
         * @param str1 原字符串
         * @param str2 间隔符
         * @param n 指定长度
         * @return
         */
        public static String insertStr(String str1,String str2,int n){
            String restr="";
            int len=str1.length();
            int foe=len/n;
            for (int i = 0; i <foe; i++) {
                int end=i*n+n;
                restr+=str1.substring(i*n, end)+str2;
            }
            restr+=str1.substring(foe*n, len);
            return restr;
        }
        /**
         * 往右补空格到指定长度
         * @param str
         * @param n
         * @return
         */
        public static String bkg_right(String str,int n){
            String restr="";
            int nulllen=0;
            if(!isNull(str)){
                restr=str;
                int len=str.length();
                nulllen=n-len;
            }else{
                nulllen=n;
            }
            for (int i = 0; i < nulllen; i++) {
                restr+=" ";
            }
            return restr;
        }
        /**
         * 转化案号显示方式
         * @param ah
         * @return
         */
        public static String[] doAh(String ah){
            String[] str=new String[7];
            if(!isNull(ah)){
                int zf1=ah.indexOf("(");
                int zf2=ah.indexOf(")");
                if(zf1==-1){
                    zf1=ah.indexOf("(");
                }
                if(zf2==-1){
                    zf2=ah.indexOf(")");
                }
                int zf3=ah.indexOf("法");
                int zf4=ah.indexOf("字");
                int zf5=ah.indexOf("第");
                int zf6=ah.indexOf("号");
                if(zf1!=-1&&zf2!=-1&&zf3!=-1&&zf4!=-1&&zf5!=-1&&zf6!=-1){
                    if(zf6>zf5&&zf5>zf4&&zf4>zf3&&zf3>zf2&&zf2>zf1){
                        str[0]=ah.substring(0, zf1+1);
                        str[1]=ah.substring(zf1+1, zf2);
                        str[2]=ah.substring(zf2, zf3+1);
                        str[3]=ah.substring(zf3+1, zf4);
                        str[4]=ah.substring(zf4, zf5+1);
                        str[5]=ah.substring(zf5+1, zf6);
                        str[6]=ah.substring(zf6, zf6+1);
                    }
                }
            }
            if(str[0]==null){
                str[0]=ah;
            }
            return str;
        }
        /**
         * 补零
         * @param str
         * @return
         */
        public static String bl(String str,int length){
            int len=str.length();
            if(len<length){
                for (int i = 0; i <length-len; i++) {
                    str="0"+str;
                }
            }
            return str;
        }
        /**
         * @param list eg:1,2,3,5,6,7,10,11(正数)
         * @return 1-3、5-7、10-11
         * */
        public static String getSerialNumberString(List list){
            String result = "";
            if(list==null || list.size()==0){
                return "";
            }
            int lastNum=-1;
            int currentNum;
            int step = 0;
            for(int i=0;i<list.size();i++){
                String str = list.get(i).toString();                
                currentNum = Integer.parseInt(str);
                if(i==0){
                    result = str;                    
                }else {
                    if(!((lastNum+1)==currentNum)){
                        if(step==0){
                            result += "、" + currentNum;
                        }else{
                            result += "-" + lastNum + "、" + currentNum;                    
                        }
                        step = 0;
                        //result += "-" + lastNum + "、" + currentNum;
                    }else{
//                        if(i==list.size()-1){
//                            result += "-"+currentNum;
//                        }
                        step++;                    
                        if(i==list.size()-1&&lastNum!=-1){
                            result += "-"+currentNum;
                        }
                    }
                }
                lastNum = currentNum;
            }
            
            
            return result;
        }
        
     public static void main(String[] args) {
        /* String str="2011/11/30";
         System.out.println(str.replace("/", "-"));*/
         List list = new ArrayList(){};
         list.add(1);
         list.add(2);
         list.add(3);
         list.add(5);
         list.add(6);
         list.add(10);
         list.add(11);
         list.add(12);
         list.add(15);
        // StringUtils su = new StringUtils();
        // String result = su.getSerialNumberString(list);
        // System.out.println(result);
         
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值