分享

一个通用的字符串检测方法

 WindySky 2007-02-02
 觉得好就顶下
import java.util.*;
import java.text.*;
import java.lang.*;
import sun.io.*;

public class DealString{
 
  public DealString(){}
 
  //过滤非法字符
  public boolean checkParameter(String para){
    int flag = 0;
    flag += para.indexOf("‘") + 1;
    flag += para.indexOf(";") + 1;
    flag += para.indexOf("1=1") + 1;
    flag += para.indexOf("|") + 1;
    flag += para.indexOf("<") + 1;
    flag += para.indexOf(">") + 1;
    if (flag != 0){
        System.out.println("提交了非法字符!!!");
        return false;
    }
    return true;
  }
 
  //把null转化为""
  public String toString(String str){
    if(str==null)str = "";
    if(str.equals("null"))str = "";
    str = str.trim();
    return str;
  }

  //转换编码
  public String toGBK(String str){
    try{
        str=new String(str.getBytes("ISO-8859-1"),"GBK");
    }catch (Exception e) {}
    return str;
  }

  //UTF8
  public String toUtf8String(String src){
    byte[] b = src.getBytes();
   char[] c = new char[b.length];
   for(int i=0;i<b.length;i++){
        c = (char)(b&0x00FF);
   }
   return new String(c);
  }

  public String toASCII(String str){
    try{
        str=new String(str.getBytes("GBK"),"ISO-8859-1");
   }catch(Exception e) {}
   return str;
  }
   
  //分割字符串
  public String[] splitStr(String str,char c){
    str+=c;
   int n=0;
   for(int i=0;i<str.length();i++){
        if(str.charAt(i)==c)n++;
    }
    String out[] = new String[n];
    for(int i=0;i<n;i++){
        int index = str.indexOf(c);
        out = str.substring(0,index);
        str = str.substring(index+1,str.length());
    }
   return out;
  }

   //取得系统时间
  public String getDateTime(){
    java.text.SimpleDateFormat f = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String time = f.format(new java.util.Date());
   return time;
  }

   //替换字符串
  public String Replace(String source, String oldString, String newString){
    StringBuffer output = new StringBuffer();
    int lengthOfSource = source.length();   // 源字符串长度
    int lengthOfOld = oldString.length();   // 老字符串长度
    int posStart = 0;   // 开始搜索位置
    int pos;         // 搜索到老字符串的位置
    while ((pos = source.indexOf(oldString, posStart)) >= 0) {
      output.append(source.substring(posStart, pos));
      output.append(newString);
      posStart = pos + lengthOfOld;
    }
    if (posStart < lengthOfSource) {
      output.append(source.substring(posStart));
    }
    return output.toString();
  }

   //取得两个日期的天数之差
  public long getDaysInterval(Date d1,Date d2){
    return (d2.getTime()-d1.getTime())/86400000;
  }

   //将字符串格式化为固定长度
  public String toLengthStr(String instr,int len){
   int n = instr.length();
   for(int i=0;i<(len-n);i++){
        instr = " "+instr;
    }
   return instr;
  }
   
  //将字符串格式化为固定长度(右边补空格)
  public String toLengthStrRight(String instr,int len){
    int n = instr.length();
   for(int i=0;i<(len-n);i++){
        instr = instr+" ";
    }
   return instr;
  }
 
  //ASCII转化为字符串
  public String AsciiToChineseString(String s){
    char[] orig = s.toCharArray();
   byte[] dest = new byte[orig.length];
   for (int i=0;i<orig.length;i++)
   dest = (byte)(orig&0xFF);
   try{
        ByteToCharConverter toChar = ByteToCharConverter.getConverter("gb2312");
        return new String(toChar.convertAll(dest));
    }catch (Exception e){
        System.out.println(e);
        return s;
    }
  }

   //字符串转化为ASCII
  public String ChineseStringToAscii(String s){
    try{
        CharToByteConverter toByte = CharToByteConverter.getConverter("gb2312");
        byte[] orig = toByte.convertAll(s.toCharArray());
        char[] dest = new char[orig.length];
        for (int i=0;i<orig.length;i++)
          dest = (char)(orig & 0xFF);
        return new String(dest);
    }catch (Exception e){
        System.out.println(e);
        return s;
    }
  }

   //Unicode转化成GB的源码
  public String UnicodetoGB(String s){
    StringBuffer sb = new StringBuffer();
   boolean escape = false;
   for(int i=0; i<s.length(); i++){
        char c = s.charAt(i);
        switch (c){
          case ‘\\‘: escape = true; break;
       case ‘u‘:
       case ‘U‘:
       if(escape){
            try{
                sb.append((char)Integer.parseInt(s.substring(i+1,i+5),16));
                escape = false;
            }catch(NumberFormatException e){
                throw new IllegalArgumentException();
            }
            i += 4;
          }
          else sb.append(c);
          break;
          default:sb.append(c); break;
        }
    }
    return sb.toString();
  }
   
  //将str中重复的去掉
  public String strDistinct(String str){
    String[] strArr=str.split(",");
    String   strAim = ",";
    for(int i=0;i<strArr.length;i++){
        if(strArr.equals("")) continue;
        if (strAim.indexOf(","+strArr+",")==-1){
          strAim = strAim + strArr + ",";
        }
    }
    if(!strAim.equals(","))
        strAim = strAim.substring(1,strAim.length()-1);
    else strAim = "";
    return strAim;
  }

   //字符转化为ASCII
  public int toASCII(char c){
    int i = c;
   return i;
  }

   //取得字符字节长度
  public int byteLength(String str){
    return ((str.getBytes()).length);
  }

   //取得字符串从头开始指定长度子串
  public String strByteCopy(String str,int nEnd){
    if(nEnd==0) return "";
   byte[] byteStr=str.getBytes();
   String strSub=new String(byteStr,0,nEnd);
   if (strSub.length()==0) strSub=new String(byteStr,0,nEnd-1);
    return strSub;
  }
   
  public boolean strMatch(String motherStr,String childStr){
    boolean matched=false;
    int mLength=motherStr.length();
    int cLength=childStr.length();
    int starWith;
    if(mLength>=cLength){
        starWith=mLength-cLength;
        for(int i=0;i<=starWith;i++){
        matched=motherStr.startsWith(childStr,i);
        if(matched)break;
        }
    }
    return matched;
  }
/*

   //把字符串转化为以UTF8编码
   public static String toUtf8String(String s) {
          StringBuffer sb = new StringBuffer();
          for (int i=0;i<s.length();i++) {
            char c = s.charAt(i);
            if (c >= 0 && c <= 255) {
              sb.append(c);
            }
            else {
              byte[] b;
              try {
              b = Character.toString(c).getBytes("utf-8");
              }
              catch (Exception ex) {
              System.out.println(ex);
              b = new byte[0];
              }
              for (int j = 0; j < b.length; j++) {
              int k = b[j];
              if (k < 0)
                k += 256;
              sb.append("%" + Integer.toHexString(k).
                      toUpperCase());
              }
            }
          }
          return sb.toString();
    }
*/
 
  public Vector simplify(String[] str){
    Vector vect = new Vector();
    for(int i=0;i<str.length;i++) vect.add(str);
    for(int i=0;i<vect.size();i++){
        String[] s1 = ((String)vect.get(i)).split("_");
        for(int j=i+1;j<vect.size();){
          boolean out = true;
          String[] s2 = ((String)vect.get(j)).split("_");
          for(int k=0;k<s1.length;k++){
            if(!s1[k].equals(s2[k])&&!s1[k].equals("0")){
                out = false;
                break;
            }
          }
          if(out) vect.remove(j);
          else j++;
        }
    }
    return vect;
  }
   
  public Vector simplify(Vector vstr){
    Vector vect = new Vector();
    for(int i=0;i<vstr.size();i++)
        vect.add(vstr.get(i));
    for(int i=0;i<vect.size();i++){
        String[] s1 = ((String)vect.get(i)).split("_");
        for(int j=i+1;j<vect.size();){
          boolean out = true;
          String[] s2 = ((String)vect.get(j)).split("_");
          for(int k=0;k<s1.length;k++){
            if(!s1[k].equals(s2[k])&&!s1[k].equals("0")){
                out = false;
                break;
            }
          }
          if(out) vect.remove(j);
       else j++;
        }
    }
    return vect;
  }

  public static void main(String args[]) throws Exception{
    DealString mb = new DealString();
    System.out.println("begin......\r\n");
   /*System.out.println("Please input string to be translated");
    String oldStr = null;
   java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
   oldStr = in.readLine();
   while(oldStr!=null){
        System.out.println(mb.UnicodetoGB(oldStr));
        oldStr = in.readLine();
    }*/
    mb.checkParameter("adfidjf|dfdijf");
   
    System.out.println(mb.getDateTime());
   
    System.out.println(mb.strDistinct("bengou,bengou"));
   
    String[] b=mb.splitStr("I love you!*wo ai ni!",‘*‘);
    for(int i=0;i<b.length;i++){
        System.out.println(b);
    }
   
    System.out.println("");
    System.out.println("It is the test end!");
  }
 
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多