redcreen

StringOperate

package com.mapbar.tools;


import java.lang.String.*;
import java.util.*;
import java.text.*;
import java.util.regex.*;
import sun.misc.BASE64Decoder;

public class StringOperate {

    String Error = new String("");  //As Err 代码
    /*
    功能:初始化
    输入参数:无输入参数
    返回值:无返回值
    */
    public StringOperate() {
        Error = "";
    }
    public static void main(String[] args){
     String temp="";
     StringOperate so=new StringOperate();
     temp=so.StringPlus1("aZ");
     System.out.print(temp);
    }
    /**
    * 功能:将原字符串修改为固定长度的字符串
    * (字数不足的,则在指定方向加入指定字符;字数超出的,则从左侧截取指定长度)
    * @param xstring 要进行处理的字符串
    * @param xlength 要修改的目标长度
    * @param xin 字数长度不够的时候,要增加的指定字符(字长1位)
    * @param xtarget 指定的方向(l=左,r=右)
    * @return 返回处理后的字符串,如果有错返回""
    */
    public String Make_Length(String xstring, int xlength, String xin, char xtarget) {
        String xxin,xinstr,xtempstr;
        int xxlength,i;
        xxlength = xlength;
        xxin = "";
        xinstr = "";
        xtempstr = "";

        if (xin.length()<1){
            xxin = "0"; //默认信息
        }
        else if(xin.length() > 1){
            xxin = xin.substring(0,1);
        }
        else{
            xxin = xin;
        }

        if (xstring.length() > xxlength) { //比预定字符串短,要截取
            if (xtarget == 'r'){
                xtempstr = xstring.substring(xstring.length()-xxlength, xstring.length()) ;
            }
            else { //默认为左侧
                xtempstr = xstring.substring(0, xxlength);
            }
        }
        else if (xstring.length() < xxlength){  //比预定字符串长,要增加指定字符
            xinstr = "";
            for (i = 1; i<= xxlength - xstring.length(); i++){
                xinstr = xinstr + xxin;
            }
            if (xtarget == 'r') {
                xtempstr = xstring + xinstr;
            }
            else { //默认为左侧
                xtempstr = xinstr + xstring;
            }
        }
        else {
            xtempstr = xstring;
        }

     return xtempstr;
    }

    /**
    * 功能:将文本格式的字符串转变为适合html页面浏览的字符串
    * @param xstring 要进行处理的字符串
    * @return 返回处理后的字符串,如果有错返回""
    */
    public String HtmlEncode(String xstring){
        String xtempstr;
        xtempstr = GetNoNull(xstring);

        xtempstr = xtempstr.replaceAll("&", "&amp;");
        //xtempstr = replace(xtempstr, "  ", "&nbsp; ")
        xtempstr = xtempstr.replaceAll("  ", "&nbsp;&nbsp;");
        xtempstr = xtempstr.replaceAll(Character.toString((char) 34), "&quot;"); //双引号
        xtempstr = xtempstr.replaceAll(Character.toString((char) 39), "&#39;"); //单引号
        xtempstr = xtempstr.replaceAll(">", "&gt;");
        xtempstr = xtempstr.replaceAll("<", "&lt;");
        xtempstr = xtempstr.replaceAll("\r\n", "<br>");
        xtempstr = xtempstr.replaceAll("\n", "<br>");

        return xtempstr;
    }

    /**
    * 功能:将文本格式的字符串转变为适合html页面TEXT文本框内浏览的字符串
    * @param xstring 要进行处理的字符串
    * @return 返回处理后的字符串,如果有错返回“”
    */
    public String HtmlEncodeText(String xstring){
        String xtempstr;
        xtempstr = GetNoNull(xstring);

        //xtempstr = xtempstr.replaceAll("  ", "&nbsp;&nbsp;");
        //xtempstr = replace(xtempstr, "  ", "&nbsp; ")
        xtempstr = xtempstr.replaceAll(">", "&gt;");
        xtempstr = xtempstr.replaceAll("<", "&lt;");
        //xtempstr = xtempstr.replaceAll("\n", "<br>");

        return xtempstr;
    }

    /**
    * 功能:将文本格式的字符串转变为适合wml页面浏览的字符串
    * @param xstring 要进行处理的字符串
    * @return 返回处理后的字符串,如果有错返回""
    */
    public String WmlEncode(String xstring){
        String xtempstr;
        xtempstr = GetNoNull(xstring);

        xtempstr = xtempstr.replaceAll("&", "&amp;");
        //xtempstr = replace(xtempstr, "  ", "&nbsp; ")
        xtempstr = xtempstr.replaceAll("  ", "&nbsp;&nbsp;");
        xtempstr = xtempstr.replaceAll(Character.toString((char) 34), "&quot;"); //双引号
        xtempstr = xtempstr.replaceAll(Character.toString((char) 39), "&#39;"); //单引号
        xtempstr = xtempstr.replaceAll(">", "&gt;");
        xtempstr = xtempstr.replaceAll("<", "&lt;");
        xtempstr = xtempstr.replaceAll("\r\n", "<br/>");
        xtempstr = xtempstr.replaceAll("\n", "<br/>");

        return xtempstr;
    }

    /**
    * 功能:将html页面浏览的字符串转变为文本格式的字符串 (与HtmlToText 函数对应并且匹配),用于提交表单的数据还原
    * @param xstring 要进行处理的字符串
    * @return 返回处理后的字符串,如果有错返回""
    */
    public String unHtmlEncode(String xstring){
        String xtempstr;
        xtempstr = GetNoNull(xstring);

        xtempstr = xtempstr.replaceAll("&nbsp;", " ");
        xtempstr = xtempstr.replaceAll("&amp;", "&");
        xtempstr = xtempstr.replaceAll("&quot;", Character.toString((char) 34)); //双引号
        xtempstr = xtempstr.replaceAll( "&#39;", Character.toString((char) 39)); //单引号
        xtempstr = xtempstr.replaceAll("&gt;", ">");
        xtempstr = xtempstr.replaceAll("&lt;", "<");
        xtempstr = xtempstr.replaceAll("<br>", "\r\n");

        return xtempstr;
    }

    /**
    * 功能:整理日期变量为标准的 yyyy-MM-dd H:m:s 格式
    * @param xdate 需要处理的日期型变量
    * @param 返回整理后的规定格式日期字符串,如果为非法日期返回"",同时将传入参数xdate转变为规范格式
    */
   public String GetDate(String xdate){
      String xtempstr;
      SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      xtempstr = GetNoNull(xdate);

      if (xtempstr.length() > 0) {
          if (toDate(xdate)!=null) {
              xtempstr = timeformat.format(toDate(xdate));
          }
          else{
              xtempstr = "";
          }

      }
      return xtempstr;
    }

    /**
    * 此类别内私用函数,功能:将标准 yyyy-MM-dd H:m:s 格式字符串转变为Date变量
    * @param xdate 需要处理的日期型变量
    * @return 返回整理后的日期型变量,如果为非法日期格式字符串返回null
    */
    public Date toDate(String xdate){

        java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            java.util.Date d=sdf.parse(xdate);
            java.sql.Date d1=new java.sql.Date(d.getTime());
            return d1;
        }
        catch (Exception ex) {
            System.out.println("sms stringclass error:" + ex);
            return null;
        }

    }

    /**
    * 功能:求得xnum位的随机ID值
    * @param xnum 随机数的长度(位数)
    * @return xnum位数的随机数
    */
    public String MakeRnd(int xnum) {
        int i,j,k;
        String xx;
        xx = "";

        for (i = 1; i <= xnum; i++) {

            //取1-3的随机数
            j = ((int)((3 - 1 + 1) * java.lang.Math.random() + 1));
            if (j == 1) {
                //取1-26的随机数
                k = 96 + ((int)((26 - 1 + 1) * java.lang.Math.random() + 1)); //a -z
            }
            else if (j == 2) {
                //取1 - 26的随机数
                k = 64 + ((int)((26 - 1 + 1) * java.lang.Math.random() + 1)); //A -Z
            }
            else {
                //取1 - 10的随机数
                k = 47 + ((int)((10 - 1 + 1) * java.lang.Math.random() + 1)); //0 -9
            }
            xx = xx + (char) k;
        }

        return xx;

    }

    /**
   * 功能:求得xnum位的随机ID值---小写字符+数字
   * @param xnum 随机数的长度(位数)
   * @return xnum位数的随机数
   */
   public String MakePassWordRnd(int xnum) {
       int i,j,k;
       String xx;
       xx = "";
       for (i = 1; i <= xnum; i++) {
           j = ((int)((2 - 1 + 1) * java.lang.Math.random() + 1));
           //取1-2的随机数
           if (j == 1) {
               //取1-26的随机数
               k = 96 + ((int)((26 - 1 + 1) * java.lang.Math.random() + 1)); //a -z
           }
           else {
               //取1 - 10的随机数
               k = 47 + ((int)((10 - 1 + 1) * java.lang.Math.random() + 1)); //0 -9
           }
           xx = xx + (char) k;
       }
       return xx;

   }


    /**
    * 功能:输出文件扩展名
    * @param FileName 文件全名
    * @return 扩展名
    */
     public String GetExtendName(String FileName) {
         String ExtName;
         ExtName = FileName.toLowerCase();
         if (ExtName.lastIndexOf(".")>=0){
             ExtName = ExtName.substring(ExtName.lastIndexOf("."), ExtName.length());
         }
         else{
             ExtName = "";
         }

         return ExtName;
     }

     /**
     * 功能:输出字符串的长度,可区别中英文(中文字符将占2个长度)
     * @param xstring 需要测长的字符串
     * @return 纯英文字符串长度
     */
     public int CnLength(String xstring) {
        int p_len, xx, ascChr;
        char xchar;
        p_len = 0;
        xx = 0;
        if (xstring == null) {
            xx = 0;
        }
        else {
            for ( xx = 1; xx <= xstring.length(); xx++ ) {
                xchar = xstring.charAt(xx-1);
                ascChr = xchar + 0;

                if (ascChr > 128) {
                    p_len = p_len + 2;
                }
                else {
                    p_len = p_len + 1;
                }
            }
        }
        return p_len;
    }

    /**
    * 功能:控制输出字符串的长度,可区别中英文
    * 例如:strvalue("复请Email通知如果不填写则取注册Email",26)
    * 这里26是指26个英文字母,也就是13个汉字
    * @param xstring 需要检测的字符串
    * @return 被按照制定长度截取后的字符串(如果不够长则输出全部字符串)
    */
    public String CnLeft(String xstring, int lennum) {
       int p_num,i,xx,ascChr;
       String xtempstr;
       char xchar;

       if (CnLength(xstring) <= lennum ) {
           xtempstr = xstring;
       }
       else {
           p_num = 0;
           xx = 0;
           while (p_num < lennum) {
               xx = xx + 1;
               xchar = xstring.charAt(xx-1);
               ascChr = xchar + 0;
               if (ascChr > 128) {
                   p_num = p_num + 2;
                   if(p_num>lennum) {
                       xx = xx - 1;
                   }
               }
               else {
                   p_num = p_num + 1;
               }
           }
           xtempstr = xstring.substring(0,xx);
       }

       return xtempstr;
    }


    /**
    * 功能:将中文字符转变为Unicode为了wap页面使用
    * @param xinPara 需要转变的字符串
    * @return 转变编码后
    */
    public String toUnicode(String xinPara){
        char temChr;
        int ascChr, i;
        String rtStr = new String("");
        String inPara = GetNoNull(xinPara);

        for(i=0; i<inPara.length(); i++){
            temChr=inPara.charAt(i);
            ascChr=temChr+0;
            //System.out.println(ascChr);
            //System.out.println(Integer.toBinaryString(ascChr));
            if (ascChr > 128) {
                rtStr = rtStr + "&#x" + Integer.toHexString(ascChr) + ";";
            }
            else {
                rtStr = rtStr + temChr;
            }
        }
        return rtStr;
    }

    /**
   * 分割字串
   * @param source 原始字符
   * @param div 分割符
   * @return 字符串数组
   */
   public static String[] split(String source,String div){
       int arynum = 0,intIdx=0,intIdex=0,div_length = div.length();
       if(source.compareTo("")!=0){
           if(source.indexOf(div)!=-1){
               intIdx = source.indexOf(div);
               for(int intCount =1 ; ; intCount++){
                   if(source.indexOf(div,intIdx+div_length)!=-1){
                       intIdx= source.indexOf(div,intIdx+div_length);
                       arynum = intCount;
                   }
                   else {arynum+=2;break;}
               }
           }
           else arynum =1;
       }
       else arynum = 0;

       intIdx=0;
       intIdex=0;
       String[] returnStr = new String[arynum];

       if(source.compareTo("")!=0){
           if(source.indexOf(div)!=-1){
               intIdx = (int)source.indexOf(div);
               returnStr[0]= (String)source.substring(0,intIdx);
               for(int intCount =1 ; ; intCount++){
                   if(source.indexOf(div,intIdx+div_length)!=-1){
                       intIdex=(int)source.indexOf(div,intIdx+div_length);
                       returnStr[intCount] = (String)source.substring(intIdx+div_length,intIdex);
                       intIdx = (int)source.indexOf(div,intIdx+div_length);
                   }
                   else {
                       returnStr[intCount] = (String)source.substring(intIdx+div_length,source.length());
                       break;
                   }
               }
           }
           else {returnStr[0] = (String)source.substring(0,source.length());return returnStr;}
       }
       else {return returnStr;}
       return returnStr;
   }

     /**
     * 功能:将null的字符串变量变为"",以方便程序使用
     * @param xStr 字符串变量
     * @return 整理后的字符串
     */
     public String GetNoNull(String xStr) {
         String xstring;
         if (xStr == null){
             xstring = "";
         }
         else{
             xstring = xStr;
         }
         return xstring;
     }

     /**
     * 功能:将字符串加密
     * @param xStr 字符串变量
     * @return 加密后的字符串
     */
     public String toPassword(String xStr) {
         String xstring;
         xstring = GetNoNull(xStr);
         return xstring;
     }

     /**
     * 功能:将字符串解密
     * @param xStr 被加密的字符串变量
     * @return 解密后的字符串
     */
     public String unPassword(String xStr) {
         String xstring;
         xstring = GetNoNull(xStr);
         return xstring;
     }

     /**
      * 功能:判断字符串是否为正整数
      * @param xStr 需要被判断的字符串变量
      * @return 如果是正整数返回True,否则返回False
      */
     public boolean isNumber(String xStr) {
         char[] c = xStr.toCharArray();
         boolean xjudge = true;
         if(xStr.length()>0) {
             for (int i = 0; i < c.length; i++) {
                 char ch = c[i];
                 if (!Character.isDigit(ch)) {
                     xjudge = false;
                     i = c.length;
                 }
             }
         }
         else {
             xjudge = false;
         }
         return xjudge;
     }

     /**
      * 功能:将10进制数转变为36进制字符串
      * @param Number 需要转变的10进制数
      * @return 转变后的36进制字符串
      */
     public String get36Str(int Number) {
         String NewStr = "";
         if(Number==0) {
             NewStr = "0";
         }
         while (Number>0) {
             int iNumber;
             char cNumber;
             iNumber = Number % 36;
             if (iNumber > 9) {
                 cNumber = (char) (iNumber + 55);
             } else {
                 cNumber = (char) (iNumber + 48);
             }
             NewStr = cNumber + NewStr;
             Number = (Number - iNumber) / 36;
         }
         return NewStr;
     }

     /**
      * 功能:获取当前时间标准格式的字符串
      * @return 时间字符串
      */
     public String getNow() {
         String xNow;
         Date date01 = new Date();
         java.sql.Timestamp date02  = new java.sql.Timestamp(date01.getTime());
         xNow = date02.toString();
         return xNow;
     }

     /**
      * 功能:获取距离当前时间相差X秒时间标准格式的字符串
      * @param Second 相差秒数
      * @return 时间字符串
      */
     public String getNowS(int Second) {
         String xNow;
         //获取当前时间之前10秒的时间变量,用于调用需要重新处理的短信息
         Calendar tcal01 = Calendar.getInstance();
         tcal01.setTime(new Date());
         tcal01.add(Calendar.SECOND, Second);
         Date date01 = tcal01.getTime();
         java.sql.Timestamp date02  = new java.sql.Timestamp(date01.getTime());
         xNow = this.GetDate(date02.toString());
         return xNow;
     }
     /**
      * 功能:获取距离指定时间相差X秒时间标准格式的字符串
      * @param TargetDate 指定时间
      * @param Second 相差秒数
      * @return 时间字符串
      */
     public String getNowS(String TargetDate, int Second) {
         String xNow;
         //获取当前时间之前10秒的时间变量,用于调用需要重新处理的短信息
         Calendar tcal01 = Calendar.getInstance();
         tcal01.setTime(this.toDate(TargetDate));
         tcal01.add(Calendar.SECOND, Second);
         Date date01 = tcal01.getTime();
         java.sql.Timestamp date02  = new java.sql.Timestamp(date01.getTime());
         xNow = this.GetDate(date02.toString());
         return xNow;
     }
    
     public String getNowS(String xdate, String TimeType, int TimeNumber) {
      Calendar tcal01 = Calendar.getInstance();
      Date TargetDate = toDate(xdate);
      String xNow = null;
      if(TargetDate!=null) {
          tcal01.setTime(TargetDate);
          if(TimeType.equals("year")) {
           tcal01.add(Calendar.YEAR, TimeNumber);
          } else if(TimeType.equals("month")) {
           tcal01.add(Calendar.MONTH, TimeNumber);
          } else if(TimeType.equals("day")) {
           tcal01.add(Calendar.DAY_OF_MONTH, TimeNumber);
          } else if(TimeType.equals("hour")) {
           tcal01.add(Calendar.HOUR_OF_DAY, TimeNumber);
          } else if(TimeType.equals("minute")) {
           tcal01.add(Calendar.MINUTE, TimeNumber);
          } else if(TimeType.equals("second")) {
           tcal01.add(Calendar.SECOND, TimeNumber);
          }
         
          java.util.Date date01 = tcal01.getTime();
          SimpleDateFormat xDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          xNow = xDateFormat.format(date01);
         }
         return xNow;
     }

     /**
      * 功能:获取从x到y的随机数(正整数)
      * @param xMin 最小值
      * @param xMax 最大值
      * @return 随机数值
      */
     public int getRnd01(int xMin, int xMax) {
         int xRnd;
         xRnd = 0;
         if(xMin>xMax) {
             xMin = xMin + xMax;
             xMax = xMin - xMax;
             xMin = xMin - xMax;
         }
         xRnd = (xMin) + ((int)((xMax-xMin+1) * java.lang.Math.random()));

         return xRnd;
     }

     /**
      * 功能:校验是否格式正确的手机号或电话号码
      * @param xNumber 电话号码
      * @return 随机数值
      */
     public boolean isPhone(String xNumber) {
         boolean judgeSign = false;

         Pattern p = Pattern.compile("^[1][3][0-9]{9}$"); //校验手机号码
         Matcher m = p.matcher(xNumber);
         if(m.matches()) {
             judgeSign = true;
         }
         else {
             p = Pattern.compile("^([0][1-9][0-9]{1,2})[0-9]{6,8}$"); //校验座机号码
             m = p.matcher(xNumber);
             if(m.matches()) {
                 judgeSign = true;
             }
         }
//         System.out.println(xxx + "," + m.matches());

         return judgeSign;
     }

     /**
     * 功能:除法运算(小数点后保留2位)
     * @param molecule 分子
     * @param denominator 分母
     */
     public String division(String molecule,String denominator){
         float num3 = 0.0f;
         float mole = Float.parseFloat(molecule); //(float)molecule1;
         float deno = Float.parseFloat(denominator); //(float)denominator1;
         //System.out.println("--mole--" + mole + "--" + deno);

         if (Float.parseFloat(molecule) != 0) {
             num3 = mole / deno;
         }
         String radio = new java.text.DecimalFormat("###.##").format(num3);
         //System.out.println("小数点后面保留二位:"+radio);
         return radio;
     }

     /**
     * 功能:Base64编码
     * @param xstring 要进行处理的字符串
     */
     public String base64_Encode(String xstring) {
         String xtempstr = "";
         if (xstring == null) {
             return null;
         }
         xtempstr =  (new sun.misc.BASE64Encoder()).encode( xstring.getBytes() );

         return xtempstr;
     }

     /**
     * 功能:Base64解码
     * @param xstring 要进行处理的字符串
     */
     public String base64_Decode(String xstring) {
         String xtempstr = "";

         if (xstring == null) {
             return null;
         }
         try {
             sun.misc.BASE64Decoder decoder = new BASE64Decoder();
             byte[] b = decoder.decodeBuffer(xstring);
             xtempstr =  new String(b);
         } catch (Exception e) {
             return null;
         }
         return xtempstr;
     }
     /**大写字符串加1 如AB->AC AZ->BA;如遇到小写字符或ZZ则报溢出错误
      * @param xstring 大写字符串
      * @return 字符串加1后返回结果
      */
     public String StringPlus1(String xstring){
      String xtempstr="";
       if (xstring == null) {
              return null;
          }
     
          try {
           char xchar[]=xstring.toCharArray();
           //System.out.print((int)++xchar[1]);
           for(int i=xstring.length()-1;i>=0;i--){
            if((int)++xchar[i]>90){
             xchar[i]='A';
             if(i==0){
              System.out.print("溢出!");
              return null;
             }
            }
            else
            {
             System.out.print("");
             break;
            }
           }
           for(int j=0;j<xstring.length();j++)
            xtempstr=xtempstr+xchar[j];
          }catch(Exception e){
           System.err.print(e.getMessage());
           return null;
          }
          return xtempstr;
     }
}

posted on 2006-09-13 13:01 charles 阅读(303) 评论(0)  编辑  收藏 所属分类: java