import java.io.ByteArrayOutputStream;import java.io.UnsupportedEncodingException;import java.lang.reflect.Method;import java.net.URLDecoder;import java.net.URLEncoder;import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;

/*** @ClassName StringUtil* @Description 字符串解析类* @Author Alan* @Date 2017/12/27 19:11* @version V1.0*/public class StringUtil {

   /**    * 创建指定数量的随机字符串    *     * @param numberFlag    *            是否是数字    * @param length    * @return    */   public static String createRandom(boolean numberFlag, int length) {      String retStr = "";      String strTable = numberFlag ? "1234567890"            : "1234567890abcdefghijkmnpqrstuvwxyz";      int len = strTable.length();      boolean bDone = true;      do {         retStr = "";         int count = 0;         for (int i = 0; i < length; i++) {            double dblR = Math.random() * len;            int intR = (int) Math.floor(dblR);            char c = strTable.charAt(intR);            if (('0' <= c) && (c <= '9')) {               count++;            }            retStr += strTable.charAt(intR);         }         if (count >= 2) {            bDone = false;         }      } while (bDone);

      return retStr;   }

   /**    * 字节数组转换为字符串    * @return    */   public static String byteToStr(byte[] byt) throws UnsupportedEncodingException {      String strRead = new String(byt,"UTF-8");      return strRead;   }

   /**    * 将字节数组转换为十六进制字符串    * @param src    * @return    * @throws UnsupportedEncodingException    */   public static String bytes2Hex(byte[] src) throws UnsupportedEncodingException {      if (src == null || src.length <= 0) {         return null;      }

      char[] res = new char[src.length * 2]; // 每个byte对应两个字符      final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };      for (int i = 0, j = 0; i < src.length; i++) {         res[j++] = hexDigits[src[i] >> 4 & 0x0f]; // 先存byte的高4位         res[j++] = hexDigits[src[i] & 0x0f]; // 再存byte的低4位      }

      return decode(new String(res),"UTF-8");   }

   /**    * 将16进制数字解码成字符串,适用于所有字符(包括中文)    */   public static String decode(String bytes, String charset) throws UnsupportedEncodingException {      ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length()/2);      final String  hexString="0123456789abcdef";      //将每2位16进制整数组装成一个字节      for(int i=0;i<bytes.length();i+=2)         baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));      return new String(baos.toByteArray(), charset);   }   /**    * 字符串转换为字节数组    * @param str    * @return    */   public static byte[] strToByte(String str){      byte[] byBuffer = new byte[200];      String strInput=str;      byBuffer= strInput.getBytes();      return byBuffer;   }      /**    * 将URL编码转化为字符串    * @param str    * @return    * @throws UnsupportedEncodingException     */   public static String strToDecoder(String str) {      try {         return URLDecoder.decode(str, "UTF-8");      } catch (UnsupportedEncodingException e) {         e.printStackTrace();         return str;      }   }      /**    * 将字符串转化为URL编码    * @param str    * @return    * @throws UnsupportedEncodingException    */   public static String strToEncoder(String str) throws UnsupportedEncodingException {      return URLEncoder.encode(str,  "UTF-8");   }      /**    * 去掉字符串中的空格、回车、换行符、制表符    * @param str    * @return    */   public static String replaceBlank(String str) {        String dest = "";        if (str!=null) {            Pattern p = Pattern.compile("\\s*|\t|\r|\n|");            Matcher m = p.matcher(str);            dest = m.replaceAll("");            // 将ASCII的值为160的替换为空字符串            dest = dest.replace(backStr(160), "");        }        return dest;    }   /**    * 去掉字符串中的空格、回车、换行符、制表符、斜杠、点、冒号    * @param str    * @return    */    public static String replaceBlanks(String str){      str = replaceBlank(str);      String dest = "";      if (str!=null) {         Pattern p = Pattern.compile("/|\\.|\\:|");         Matcher m = p.matcher(str);         dest = m.replaceAll("");      }      return dest;   }    /**     * 字符转ASC     *      * @param st     * @return     */    public static int getAsc(String st) {        byte[] gc = st.getBytes();        int ascNum = (int) gc[0];        return ascNum;    }    /**     * ASC转字符     *      * @param backnum     * @return     */    public static char backchar(int backnum) {        char strChar = (char) backnum;        return strChar;    }        /**     * ASC转字符串     * @param     */    public static String backStr(int backnum) {        char strChar = (char) backnum;        return String.valueOf(strChar);    }      /**    * 将Object转换为String    * @param o    * @return    */   public static String isNull(Object o){      if (o==null) {         return "";      }      return o.toString();   }   /**    * 判断对象是否为空    * @param o    * @return    */   public static boolean isEmpty(Object o){      boolean result = false;      if(o == null){         result = true;      } else {         if("".equals(o.toString())){            result = true;         }      }      return result;   }   /***    * encode by Base64    */   public static String encodeBase64(byte[]input) throws Exception{      Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");      Method mainMethod= clazz.getMethod("encode", byte[].class);      mainMethod.setAccessible(true);      Object retObj=mainMethod.invoke(null, new Object[]{input});      return (String)retObj;   }   /***    * decode by Base64    */   public static byte[] decodeBase64(String input) throws Exception{      Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");      Method mainMethod= clazz.getMethod("decode", String.class);      mainMethod.setAccessible(true);      Object retObj=mainMethod.invoke(null, input);      return (byte[])retObj;   }   public static byte[] hexStringToBytes(String hexString) {      if (hexString == null || hexString.equals("")) {         return null;      }      hexString = hexString.toUpperCase();      int length = hexString.length() / 2;      char[] hexChars = hexString.toCharArray();      byte[] d = new byte[length];      for (int i = 0; i < length; i++) {         int pos = i * 2;         d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));      }      return d;   }   private static byte charToByte(char c) {      return (byte) "0123456789ABCDEF".indexOf(c);   }   //将指定byte数组以16进制的形式打印到控制台   public static void printHexString( byte[] b) {      for (int i = 0; i < b.length; i++) {         String hex = Integer.toHexString(b[i] & 0xFF);         if (hex.length() == 1) {            hex = '0' + hex;         }         System.out.print(hex.toUpperCase() );      }   }   /**    * 将list集合转化为like查询语句    * @param names    * @return    */   public static String listToLikeString (List<String> names) {      StringBuffer sb = new StringBuffer();      sb.append("(");      for(int i=0; i<names.size(); i++){         sb.append("'");         sb.append(names.get(i));         sb.append("'");         if(i != names.size() - 1){            sb.append(",");         }      }      sb.append(")");      return sb.toString();   }   /**    * 对Json字符串进行排序    * @param str    * @return    */   public static String sortString (String str) {      try {         Map<Object, Object> map = FastJsonUtil.getMapJSON(str);         TreeMap treeMap = new TreeMap(map);         return FastJsonUtil.parseToJSON(treeMap);      } catch (Exception e) {         return str;      }   }   /**    * 根据某个字符对字符串进行分割    * @param str    * @return    */   public static String[] spilt(String str, String reg){      str = replaceBlank(str);      String[] spilt = str.split(reg);      return spilt;   }   /**    * 根据逗号进行分割    * @param str    * @return    */   public static String[] spilt(String str){      return spilt(str,",");   }   public static void main(String[] args) {      String s = "http://192.168.2.26:4000/";      s = replaceBlanks(s);      System.out.println(s);   }} 

Java字符串工具类的更多相关文章

  1. 自用java字符串工具类

    不断封装一些常用的字符串操作加到这个工具类里,不断积累: package com.netease.lede.qa.util; import java.text.ParseException; impo ...

  2. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  3. StringUtils 字符串工具类

    package com.thinkgem.jeesite.common.utils; import java.io.File; import java.io.IOException; import j ...

  4. Java json工具类,jackson工具类,ObjectMapper工具类

    Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...

  5. JAVA String 工具类

    java StringUtil 字符串工具类 import java.util.ArrayList; import java.util.LinkedHashSet; import java.util. ...

  6. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  7. Jsoup请求http或https返回json字符串工具类

    Jsoup请求http或https返回json字符串工具类 所需要的jar包如下: jsoup-1.8.1.jar 依赖jar包如下: httpclient-4.5.4.jar; httpclient ...

  8. java日期工具类DateUtil-续一

    上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...

  9. java日期工具类DateUtil-续二

    该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...

随机推荐

  1. user agent stylesheet -- 浏览器默认样式

    user agent stylesheet 从字面意义上很容易理解他表示用户浏览器的样式表. 今天在做项目时,无意间发现一个元素我并没有设置li的text-align:center : 但其中的img ...

  2. JAVA学习5:用Maven创建第一个web项目(2)servlet演示

    上一章用Maven新建了web项目成功后,本文演示在此基础上应用servlet. 1.首先修改pom.xml文件,添加servlet依赖   <project xmlns="http: ...

  3. 我的Python升级打怪之路【五】:Python模块

    模块,是一些代码实现了某个功能的集合 模块的分类: 自定义模块 第三方模块 内置模块 导入模块 import module from module.xx.xx import xx from modul ...

  4. 九度oj题目1555:重复子串

    题目1555:重复子串 时间限制:3 秒 内存限制:256 兆 特殊判题:否 提交:738 解决:125 题目描述: 给定一个由小写字母组成的字符串,求它的所有连续子串中,出现过至少两次,且至少有一对 ...

  5. 一些在线开发手册api文档收藏

    java JavaSE8 api:https://docs.oracle.com/javase/8/docs/api/ JavaSE7 api:http://docs.oracle.com/javas ...

  6. 学会Markdown,写博客不愁

    前言 Markdown是一种轻量级的标记语言,有John Gruber以及Aaron Hillel Swartz一起编写.Aaron Hillel Swartz是一个极富传奇的黑客,有兴趣可以看看他的 ...

  7. Effective C++ .12 复制对象-拷贝构造函数的编写

    当我们自己编写拷贝构造函数时,编译器就不会为该类生成默认拷贝构造函数了,对于assignment operator也是如此. 1. 拷贝构造函数中记得调用父类的拷贝构造函数,或者相应复制过程 clas ...

  8. HTML5学习笔记之canvas

    标签 canvas标签有一个默认宽高:300*150: canvas的宽高一般写到行间样式中,写在style会有问题详细请看这里: 绘制环境 要绘图先要获取到绘制环境: var oC = docume ...

  9. Java 文件上传与下载、email

    1. 文件上传与下载 1.1 文件上传 文件上传,要点: 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> ...

  10. cnpm 安装

    国内npm 安装比较慢,可选择cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org