读书人

Java数据类型转换已经字符串处置工具类

发布时间: 2012-10-08 19:54:56 作者: rapoo

Java数据类型转换已经字符串处理工具类

package com.project.system.util;import java.util.Calendar;import java.util.Date;import java.util.TimeZone;import java.util.Vector; /****  * {@docRoot    所有的数据转换处理 } * @version     1.0 * @since       2011\4\13 * ****/public class DataTypeChange {/*** * 表 Java中的简单类型 简单类型 boolean byte char     short  int     long float double void 二进制位数 1      8    16        16    32      64   32    64     -- 字节数     1      1     2        2     4       8    4      8     0C++范围    1      1     1        2     4       4    4      8     0                            封装器类 Boolean Byte Character Short Integer Long Float Double Void   这里的java和c++中的char类型的大小是不同的 * ***/ // 将字符串转换成一定长度的字节数组    /***     * @param  src 需要输入处理的源字符串     * @param  byte_len 固定大小     * @return byte[]     *    String --> byte[]     * **/    public  static  byte[] string2Bytes(String src,int byte_len){  byte[] b1 = new byte[byte_len];StringBuffer tempb = new StringBuffer();     // 临时填充数据int temp_len = 0;                            // 临时字符的大 int src_len = src.length();                  // 需要转换的字符串的长度char zero = '\0';if(src_len<byte_len){temp_len = byte_len - src_len;           // 计算填充位的大小for(int i=0;i<temp_len;i++){             // 循环填充占位符tempb.append(zero);} b1 = (src+tempb.toString()).getBytes(); //tempb.delete(0, temp_len);               // 清空临时字符}else{                                       // 如果大于此规定的长度,则直接转为btye类型b1 = src.getBytes();}  return b1;    }   // 将字符串转换成一定长度的字符串,不足的添加'\0'标识    /***     * @param  src 需要输入处理的源字符串     * @param  byte_len 固定大小     * @return String 返回的长度为byte_len的字符串     *      *  String --> fillString     * **/    public  static  String  fillString(String src,int byte_len){           String fill_str = "";StringBuffer tempb = new StringBuffer();  // 临时填充数据int temp_len = 0;                         // 临时字符的大 int src_len = src.length();               // 需要转换的字符串的长度char zero = '\0';if(src_len<byte_len){temp_len = byte_len - src_len;        // 计算填充位的大小for(int i=0;i<temp_len;i++){          // 循环填充占位符tempb.append(zero);}fill_str = src+tempb.toString();} else{fill_str = src;}return  fill_str;    } //   byte[] --> intpublic  static int bytes2Int1(byte[] bytes) {         int num = bytes[0] & 0xFF;      num |= ((bytes[1] << 8) & 0xFF00);        return num; }//   byte[] --> intpublic static int bytes2Int2(byte[] intByte) { int fromByte = 0;      for (int i = 0; i < 2; i++)         {         int n = (intByte[i] < 0 ? (int)intByte[i] + 256 : (int)intByte[i]) << (8 * i);           System.out.println(n);          fromByte += n;         }          return fromByte;    } // bytes to intpublic  static int bytesToInt(byte[] bytes) {        int addr = bytes[0] & 0xFF;        addr |= ((bytes[1] << 8) & 0xFF00);        addr |= ((bytes[2] << 16) & 0xFF0000);        addr |= ((bytes[3] << 24) & 0xFF000000);        return addr;    }// byte[] --> Stringpublic static String bytes2String(byte b[]){String result_str = new String(b);return result_str;}//  int --> byte[]public static byte[] int2Bytes(int res) {byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xff);// 最低位 targets[1] = (byte) ((res >> 8) & 0xff);// 次低位 targets[2] = (byte) ((res >> 16) & 0xff);// 次高位 targets[3] = (byte) (res >>> 24);// 最高位,无符号右移。 return targets; } // char --> byte[]public static byte[] char2Bytes(char ch){       int temp=(int)ch;   byte[] b=new byte[2];   for (int i=b.length-1;i>-1;i--){      b[i] = new Integer(temp&0xff).byteValue();//将最高位保存在最低位      temp = temp >> 8;         //向右移8位     }        return b;}// char --> int 8-->16public static int char2Int(char c){return  c;}// int --> char 16-->8需要强制转换public static char int2Char(int i){return  (char)i;}   /***   * 数据之间的转换操作   ***/// 数据大于10000的时候进行处理public static String getF10000(float f1){   String str = "";   double d1 = 0.0d;   if(f1>10000.0f&&f1<100000000.0d){// 数据在10万到1亿之间的数据   d1 = f1/10000.0f;   str = DataTypeChange.save2bit(d1)+"万";   }else if(f1>100000000.0d){   d1 = (double)f1/100000000.0d;   str = DataTypeChange.save2bit(d1)+"亿";   }else{    d1 = f1;   str = DataTypeChange.save2bit(d1)+"";   }   return str;   } // 截取byte数组从start到end的位置转换成strng /***  * @input   src         待截取字节数组  *          start       待截取字节数组的开始位置  *          src_size    截取的长度 == 数据类型的长度  *             * @output  int 字节截取转换成int后的结果  *   * **/public static int bytesSub2Int(byte[] src,int start,int src_size) { //if(src.length==0){byte[] resBytes = new byte[src_size];    System.arraycopy(src, start, resBytes, 0, src_size);      return  bytesToInt(resBytes);//}else{//return 0;//} } /***  * @input   src         待截取字节数组  *          start       待截取字节数组的开始位置  *          src_size    截取的长度 == 数据类型的长度  *             * @output  String 字节截取转换成String后的结果  *   * **/public static String bytesSub2String(byte[] src,int start,int src_size) { byte[] resBytes = new byte[src_size];System.arraycopy(src, start, resBytes, 0, src_size);  // System.out.println(" len ==" +resBytes.length  //         + " sub_bytes = " + bytes2Int1(resBytes)); return  bytes2String(resBytes);}  /***  * @input   src         待截取字节数组  *          start       待截取字节数组的开始位置  *          src_size    截取的长度 == 数据类型的长度  *             * @output  从start下标开始长度为src_size长度的字节数组结果  *   * **/public static byte[] bytesSub(byte[] src,int start,int src_size) { byte[] resBytes = new byte[src_size];System.arraycopy(src, start, resBytes, 0, src_size);  return  resBytes;}/** * splite the src with sep, and place them in a array *  * @param src * @param sep * @return */public static String[] splite(String src, String sep) {Vector v = new Vector();int index;int fromIndex = 0;while ((index = src.indexOf(sep, fromIndex)) != -1) {v.addElement(src.substring(fromIndex, index));fromIndex = index + sep.length();}v.addElement(src.substring(fromIndex, src.length()));String[] result = new String[v.size()];for (int i = 0; i < result.length; i++) {result[i] = (String) v.elementAt(i);}return result;}/** * splite the src with sep, place them in a array, and replace sep with * sep_code *  * @param src * @param sep * @param sep_code * @return */public static String[] splite(String src, String sep, String sep_code) {String[] result = splite(src, sep);replace(result, sep_code, sep);return result;}/** * replace the child string with the newStr in the src *  * @param src * @param oldStr * @param newStr * @return */public static String replace(String src, String oldStr, String newStr) {int oldSize = oldStr.length();int newSize = newStr.length();int margin = newSize - oldSize;int offset = 0;StringBuffer sb = new StringBuffer(src);int index;int fromIndex = 0;while ((index = src.indexOf(oldStr, fromIndex)) != -1) {fromIndex = index + oldSize;sb.delete(index + offset, fromIndex + offset);sb.insert(index + offset, newStr);offset += margin;}return sb.toString();}/** * replace the child string with the newStr in the String of the array *  * @param src * @param oldStr * @param newStr */public static void replace(String[] src, String oldStr, String newStr) {for (int i = 0; i < src.length; i++) {src[i] = replace(src[i], oldStr, newStr);}}/** *  * @param para *            the parameter name * @param src *            the text * @return  *           the value of the parameter */public static String getParaVal(String para, String src) {String paraval = null;String tempPara = para;int s1 = 0;int s2 = 0;int len = 0;int httplen = 0;if (tempPara == null || src == null)return "";tempPara = tempPara + "=";len = tempPara.length();httplen = src.length();if (httplen == 0)return "";if (len == 0)// || len > 9)return "";s1 = src.indexOf(tempPara); // find the parameter nameif (s1 == -1)return "";s2 = src.indexOf('&', s1);// find next &if (s2 == -1) {// the last one parameterparaval = src.substring(s1 + len);} else {paraval = src.substring(s1 + len, s2);}return paraval;}/** *  * @param para *            the parameter name * @param src *            the text * @param sep *            the separator            * @return  *           the value of the parameter */public static String getParaValEx(String para, String src, char sep) {String paraval = null;String tempPara = para;int s1 = 0;int s2 = 0;int len = 0;int httplen = 0;if (tempPara == null || src == null)return "";tempPara = tempPara + "=";len = tempPara.length();httplen = src.length();if (httplen == 0)return "";if (len == 0)// || len > 9)return "";s1 = src.indexOf(tempPara); //find the parameter nameif (s1 == -1)return "";s2 = src.indexOf(sep, s1);// find next &if (s2 == -1) {// the last one parameterparaval = src.substring(s1 + len);} else {paraval = src.substring(s1 + len, s2);}return paraval;}//byte[]转float  /**   * byte[] to float   * @param b   * @param index   * @return float   */  public static float getFloat(byte[] b,int index)  throws Exception{         int i = 0;         i = ((((b[index + 3]&0xff)<<8 | (b[index + 2]&0xff))<<8) | (b[index + 1]&0xff))<<8 | (b[index + 0]&0xff);         return Float.intBitsToFloat(i);     } // byte[] --> float  public static float bytes2Float(byte[] b){  float f = 0f;  try {  f = getFloat(b,0);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}  return f;   } //bytes to intpublic  static short bytesToShort(byte[] bytes) {      int addr = bytes[0] & 0xFF;      addr |= ((bytes[1] << 8) & 0xFF00);       return (short)addr;  }  /*********** 保留有效数字的小数点后位数设置 start ************/  // 保留2位有效数字  public static double save2bit(double t1){  double result = (double) (int) ((t1 + 0.005) * 100.0) / 100.0;   return result;  }   // 保留1位有效数字  public static double save1bit(double t1){  double result = (double) (int) ((t1 + 0.005) * 10.0) / 10.0;   return result;  }  /*********** 保留有效数字的小数点后位数设置 end     ************/   /*********** 日期类型格式转换以及时差参数处理 start ************/  // Long类型的毫秒转为日期字符  public static String getStrDate(long time){ String str = ""; Date date = new Date(time); TimeZone china=TimeZone.getTimeZone("GMT+08:00"); //时区设置     Calendar calendar = Calendar.getInstance(china);     calendar.setTime(date);     String mon = String.valueOf(calendar.get(Calendar.MONTH)+1);      if(mon.length()==1){     mon = "0"+mon;     }     String day = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));      if(day.length()==1){     day = "0"+day;     }      str = String.valueOf(calendar.get(Calendar.YEAR))          + mon          + day;    return str;  }   // k线左侧显示的时间格式  月份天数小时分钟  public static String getStrDTime(long time){ String str = ""; Date date = new Date(time); TimeZone china=TimeZone.getTimeZone("GMT+08:00"); //时区设置     Calendar calendar = Calendar.getInstance(china);     calendar.setTime(date);     String mon = String.valueOf(calendar.get(Calendar.MONTH)+1);      if(mon.length()==1){     mon = "0"+mon;     }     String day = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));      if(day.length()==1){     day = "0"+day;     }      String hour = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));      if(hour.length()==1){     hour = "0"+hour;     }     String minute = String.valueOf(calendar.get(Calendar.MINUTE));      if(minute.length()==1){     minute = "0"+minute;     }     str = mon + day + hour + minute;    return str;}   // 获取当天是星期几  public static int getNowMinute(long time){     int week = 1;     Date date = new Date(time);      Calendar calendar = Calendar.getInstance();     calendar.setTime(date);     week = calendar.get(Calendar.MINUTE);     return week;  }  // 获取当天是星期几  public static int getNowWeek(long time){     int week = 1;     Date date = new Date(time);      Calendar calendar = Calendar.getInstance();     calendar.setTime(date);     week = calendar.get(Calendar.DAY_OF_WEEK);     return week;  }  // 获取当天几点  public static int getNowHour(long time){     int week = 1;     Date date = new Date(time);      Calendar calendar = Calendar.getInstance();     calendar.setTime(date);     week = calendar.get(Calendar.HOUR_OF_DAY);     return week;  }  // 获取当天是这个月的第几天  public static int getNowMonth(long time){     int month = 1;     Date date = new Date(time);      Calendar calendar = Calendar.getInstance();      calendar.setTime(date);     month = calendar.get(Calendar.WEEK_OF_MONTH);     return month;  }   // 获取当天是第几个月  public static int getNMonth(long time){     int month = 1;     Date date = new Date(time);      TimeZone china=TimeZone.getTimeZone("GMT+08:00"); //时区设置     Calendar calendar = Calendar.getInstance(china);      calendar.setTime(date);     month = calendar.get(Calendar.MONTH);     return month;}      // k线底部日期的显示格式  public static String getButtomDate(String timeStr){ String str = ""; String mon = timeStr.substring(4, 6); String day = timeStr.substring(6, 8);     str =   mon +"/"+ day;     return str; }    // step = 时差的大小  type=0 向前  type=1向后  public static long getTimeCha(long step,int type){  long ret = 0;  long now = System.currentTimeMillis();  //获取当前的时间种子  if(type==0){  ret = now + step;  }else{  ret = now - step;  }   return ret;   }   // 获取时间,精确到分钟    public static String getStrTime(long timess){   String str = "";   Date date = new Date(timess);   TimeZone china=TimeZone.getTimeZone("GMT+08:00"); //时区设置      Calendar calendar = Calendar.getInstance(china);      calendar.setTime(date);       String hour  = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));      String minute  = String.valueOf(calendar.get(Calendar.MINUTE));      if(minute.length()==1){      minute = "0"+minute;      }      if(hour.length()==1){      hour = "0"+hour;      }        str = hour + ":" + minute;     return str;  }   // 获取分时时间,当天0点开始  public static long getNowDayZone(){     long  time = System.currentTimeMillis();      Date date = new Date(time);       TimeZone china=TimeZone.getTimeZone("GMT+08:00"); //时区设置     Calendar calendar = Calendar.getInstance(china);      calendar.setTime(date);      calendar.set(Calendar.HOUR_OF_DAY, 0);      calendar.set(Calendar.MINUTE, 0);      calendar.set(Calendar.SECOND, 0);      return calendar.getTime().getTime();   }   /***   * 根据设置获取当天的时间   * @param  h = 小时;m = 分钟; s = 秒;   * @return long 当前时间所代表的毫秒数   * ***/  public static long getTimesDataBySet(int h,int m,int s){     long  time = System.currentTimeMillis();      Date date = new Date(time);       TimeZone china=TimeZone.getTimeZone("GMT+08:00"); //时区设置     Calendar calendar = Calendar.getInstance(china);      calendar.setTime(date);      calendar.set(Calendar.HOUR_OF_DAY, h);      calendar.set(Calendar.MINUTE, m);      calendar.set(Calendar.SECOND, s);      return calendar.getTime().getTime();  }     /***   *  判断今天天是星期几   * @param  d = 天  2 ==星期1, 6 ==星期5   * @return long 当前时间所代表的毫秒数   * ***/  public static int getWeekDayBySet(){         int week = 1;     long t = System.currentTimeMillis();      Date date = new Date(t);      Calendar calendar = Calendar.getInstance();      calendar.setTime(date);     week = calendar.get(Calendar.DAY_OF_WEEK);      return   week; }  /*   *  判断一下时间是否在开盘时间内 *  */ public static boolean isOpenTime(){     long t = System.currentTimeMillis();   int a = getWeekDayBySet();// 如果这个数字在2-6之间,则符合要求  longamOpen = getTimesDataBySet(9, 30, 0);  longamClose = getTimesDataBySet(11, 30, 0);  longpmOpen =  getTimesDataBySet(13, 0, 0);  long  pmClose = getTimesDataBySet(15, 0, 0);//  System.out.println(" === week == " + a + " t = "+ t +"  pmOpen = " + pmOpen);     if(a>1&&a<7){  if((t>=amOpen&&t<=amClose)||(t>=pmOpen&&t<=pmClose)){    return true;  // 只有日期在周一到周五之间,时间为开盘时间的时候才会执行数据刷新  }else{    return false;  }    }else{  return false;  }} public static boolean isOpenT(){     long t = System.currentTimeMillis();   int a = getWeekDayBySet();// 如果这个数字在2-6之间,则符合要求  longamOpen = getTimesDataBySet(9, 30, 0);   long  pmClose = getTimesDataBySet(15, 0, 0);//  System.out.println(" === week == " + a + " t = "+ t +"  pmOpen = " + pmOpen);     if(a>1&&a<7){  if((t>=amOpen&&t<=pmClose)){    return true;  // 只有日期在周一到周五之间,时间为开盘时间的时候才会执行数据刷新  }else{    return false;  }    }else{  return false;  }}     /*********** 日期类型格式转换以及时差参数处理 end ************/  /***    * 数据排序算法   * ***/ /**  * 冒泡排序  * @input 一个未排序的数组  *  * @return 按照从小到大排序完成的数组  */ public static int[] doSort(int source[]) {  int length = source.length;  for (int i = length - 1; i > 1; i--) {   for (int j = 0; j < i; j++)    if (source[j] > source[j + 1]) {     int tmp = source[j];     source[j] = source[j + 1];     source[j + 1] = tmp;    }  }  return source; }  // float 类型的方法重载  public static float[] doSort(float source[]) {  int length = source.length;  for (int i = length - 1; i > 0; i--) {   for (int j = 0; j < i; j++)    if (source[j] > source[j + 1]) {     float tmp = source[j];     source[j] = source[j + 1];     source[j + 1] = tmp;    }  }  return source; }     // vector 类型的方法重载  public static Vector doKLineVectorSort(Vector vv) {  Vector vvs = new Vector();  int size = vv.size();  for(int i=size-1;i>=0;i--){  vvs.addElement(vv.elementAt(i));  }    return vvs; }  // 过滤特殊字符 public static String filterString(String str){ StringBuffer buffer = new StringBuffer(); String filter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char c,cc;   for (int i = 0; i < str.length(); i++) {         c = str.charAt(i);       //  System.out.println( i + " == " + c);         if(c<'0'||c>'9'){        // System.out.println("含有非法字符:" + c);          for(int j=0;j<26;j++){         cc = filter.charAt(j);         if(cc==c){         buffer.append(c);         }          }              }else{        buffer.append(c);          }     } return buffer.toString(); }  // 数据处理,去空和替换特殊字符 “="  ”" ,'\0' public static String getFilterText(String src){    // 先替换字符      String str = src.trim();      String str1 =DataTypeChange.replace(str, "“", "\"");      String str2 = DataTypeChange.replace(str1, "”", "\"");      String str3 = DataTypeChange.replace(str2, "·", ".");    /*   StringBuffer buffer = new StringBuffer();      char c;      char fi = '\0';      for(int i=0;i<str3.length();i++){      c = str3.charAt(i);      if(c!=fi){// 如果存在\0则跳过添加      buffer.append(c);      }      }       buffer.toString();      */      return str3;    }     }

?

读书人网 >编程

热点推荐