博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
公共类
阅读量:4355 次
发布时间:2019-06-07

本文共 10459 字,大约阅读时间需要 34 分钟。

1 /**功能说明     2  * @param 公共方法  3  * @author   4  * @since 2013-4-15 下午02:04:56  5  */  6 package com.mall.common;  7   8 import java.io.UnsupportedEncodingException;  9 import java.lang.reflect.Array; 10 import java.text.DecimalFormat; 11 import java.text.SimpleDateFormat; 12 import java.util.Collection; 13 import java.util.Date; 14 import java.util.Map; 15 import java.util.StringTokenizer; 16  17 import org.apache.log4j.Logger; 18  19 import sun.misc.BASE64Decoder; 20  21 public class StringUtils { 22     private static Logger log=Logger.getLogger(StringUtils.class); 23      24     public static final String KEYWORD_IMPORT = "会员批量导入已经成功!"; 25  26     public static final String ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.!~*'()"; 27  28     /** 29      * 转码 30      * @param input 31      * @return 32      */ 33     public static String encodeURIComponent(String input) { 34         if (StringUtils.isEmpty(input)) { 35             return input; 36         } 37  38         int l = input.length(); 39         StringBuilder o = new StringBuilder(l * 3); 40         try { 41             for (int i = 0; i < l; i++) { 42                 String e = input.substring(i, i + 1); 43                 if (ALLOWED_CHARS.indexOf(e) == -1) { 44                     byte[] b = e.getBytes("utf-8"); 45                     o.append(getHex(b)); 46                     continue; 47                 } 48                 o.append(e); 49             } 50             return o.toString(); 51         } catch (UnsupportedEncodingException e) { 52             log.error(e.getMessage()); 53         } 54         return input; 55     } 56  57     /** 58      * 解码 59      * @param encodedURI 60      * @return 61      */ 62     public static String decodeURIComponent(String encodedURI) { 63         char actualChar; 64  65         StringBuffer buffer = new StringBuffer(); 66  67         int bytePattern, sumb = 0; 68  69         for (int i = 0, more = -1; i < encodedURI.length(); i++) { 70             actualChar = encodedURI.charAt(i); 71  72             switch (actualChar) { 73             case '%': { 74                 actualChar = encodedURI.charAt(++i); 75                 int hb = (Character.isDigit(actualChar) ? actualChar - '0' 76                         : 10 + Character.toLowerCase(actualChar) - 'a') & 0xF; 77                 actualChar = encodedURI.charAt(++i); 78                 int lb = (Character.isDigit(actualChar) ? actualChar - '0' 79                         : 10 + Character.toLowerCase(actualChar) - 'a') & 0xF; 80                 bytePattern = (hb << 4) | lb; 81                 break; 82             } 83             case '+': { 84                 bytePattern = ' '; 85                 break; 86             } 87             default: { 88                 bytePattern = actualChar; 89             } 90             } 91  92             if ((bytePattern & 0xc0) == 0x80) { // 10xxxxxx 93                 sumb = (sumb << 6) | (bytePattern & 0x3f); 94                 if (--more == 0) 95                     buffer.append((char) sumb); 96             } else if ((bytePattern & 0x80) == 0x00) { // 0xxxxxxx 97                 buffer.append((char) bytePattern); 98             } else if ((bytePattern & 0xe0) == 0xc0) { // 110xxxxx 99                 sumb = bytePattern & 0x1f;100                 more = 1;101             } else if ((bytePattern & 0xf0) == 0xe0) { // 1110xxxx102                 sumb = bytePattern & 0x0f;103                 more = 2;104             } else if ((bytePattern & 0xf8) == 0xf0) { // 11110xxx105                 sumb = bytePattern & 0x07;106                 more = 3;107             } else if ((bytePattern & 0xfc) == 0xf8) { // 111110xx108                 sumb = bytePattern & 0x03;109                 more = 4;110             } else { // 1111110x111                 sumb = bytePattern & 0x01;112                 more = 5;113             }114         }115         return buffer.toString();116     }117 118     private static String getHex(byte buf[]) {119         StringBuilder o = new StringBuilder(buf.length * 3);120         for (int i = 0; i < buf.length; i++) {121             int n = (int) buf[i] & 0xff;122             o.append("%");123             if (n < 0x10) {124                 o.append("0");125             }126             o.append(Long.toString(n, 16).toUpperCase());127         }128         return o.toString();129     }130 131     /**132      * 判断某个对象是否为空 集合类、数组做特殊处理133      * 134      * @param obj135      * @return 如为空,返回true,否则false136      * @author YZH137      */138     @SuppressWarnings("unchecked")139     public static boolean isEmpty(Object obj) {140         if (obj == null)141             return true;142 143         // 如果不为null,需要处理几种特殊对象类型144         if (obj instanceof String) {145             return obj.equals("");146         } else if (obj instanceof Collection) {147             // 对象为集合148             Collection coll = (Collection) obj;149             return coll.size() == 0;150         } else if (obj instanceof Map) {151             // 对象为Map152             Map map = (Map) obj;153             return map.size() == 0;154         } else if (obj.getClass().isArray()) {155             // 对象为数组156             return Array.getLength(obj) == 0;157         } else {158             // 其他类型,只要不为null,即不为empty159             return false;160         }161     }162 163     /**164      * 转码165      * @param str166      * @return167      */168     public static String encodeBase64(String str){169         if (str == null){ 170             return null; 171         }else{172             return (new sun.misc.BASE64Encoder()).encode(str.getBytes() ); 173         }174     }175     176     /**177      * 解码178      * @param args179      */180     public static String  decodeBase64(String str){181         if (str == null) {182             return null;183         }else{184             BASE64Decoder decoder = new BASE64Decoder(); 185             try {186                 byte[] b = decoder.decodeBuffer(str); 187                 return new String(b); 188             } catch (Exception e) {189                 e.printStackTrace();190                 return null; 191             }192         }193     }194 195     /**196      * 使用StringTokenizer类将字符串按分隔符转换成字符数组197      * @param string 字符串 198      * @param divisionChar 分隔符199      * @return 字符串数组200      * @see [类、类#方法、类#成员]201      */202     public static String[] stringAnalytical(String string, String divisionChar)203     {204         int i = 0;205         StringTokenizer tokenizer = new StringTokenizer(string, divisionChar);206         207         String[] str = new String[tokenizer.countTokens()];208         209         while (tokenizer.hasMoreTokens())210         {211             str[i] = new String();212             str[i] = tokenizer.nextToken();213             i++;214         }215         216         return str;217     }218     219     /**220      * 字符串解析,不使用StringTokenizer类和java.lang.String的split()方法221      * 将字符串根据分割符转换成字符串数组222      * @param string 字符串223      * @param c 分隔符224      * @return 解析后的字符串数组225      */226     public static String[] stringAnalytical(String string, char c)227     {228         //字符串中分隔符的个数229         int count = 0;230         231         //如果不含分割符则返回字符本身232         if (string.indexOf(c) == -1)233         {234             return new String[]{string};235         }236         237         char[] cs = string.toCharArray();238         239         //过滤掉第一个和最后一个是分隔符的情况240         for (int i = 1; i < cs.length -1; i++)241         {242             if (cs[i] == c)243             {244                 count++; //得到分隔符的个数245             }246         }247         248         String[] strArray = new String[count + 1];249         int k = 0, j = 0;250         String str = string;251         252         //去掉第一个字符是分隔符的情况253         if ((k = str.indexOf(c)) == 0)254         {255             str = string.substring(k + 1);256         }257         258         //检测是否包含分割符,如果不含则返回字符串259         if (str.indexOf(c) == -1)260         {261             return new String[]{str};262         }263         264         while ((k = str.indexOf(c)) != -1)265         {266             strArray[j++] = str.substring(0, k);267             str = str.substring(k + 1);268             if ((k = str.indexOf(c)) == -1 && str.length() > 0)269             {270                 strArray[j++] = str.substring(0);271             }272         }273         274         return strArray;275     }276 277     /**278      * 去除null以及空格串279      * @return:280      * @author: YZH281      */282     public static String noNull(Object s) {283         if (s == null)284             return "";285         else286             return s.toString().trim();287     }288     289     /**290      * 291      * {将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名}292      * @param s 原文件名293      * @return  重新编码后的文件名294      * @author: YZH295      */296     public static String toUtf8String(String s) {297         StringBuffer sb = new StringBuffer();298         for (int i = 0; i < s.length(); i++) {299             char c = s.charAt(i);300             if ((c >= 0) && (c <= 255)) {301                 sb.append(c);302             }303             else {304                 byte[] b;305 306                 try {307                     b = Character.toString(c).getBytes("UTF-8");308                 }309                 catch (Exception ex) {310                     System.out.println(ex);311                     b = new byte[0];312                 }313                 for (int j = 0; j < b.length; j++) {314                     int k = b[j];315                     if (k < 0) {316                         k += 256;317                     }318                     sb.append("%" + Integer.toHexString(k).toUpperCase());319                 }320             }321         }322         return sb.toString();323     }324 325     public static boolean arryContain(String[]arr,String s2){326         for(int i=0;i
").append("alert('").append(tips)374 .append("');window.history.back();").append("");375 return sb.toString();376 }377 378 public static void main(String[]args){379 String result=StringUtils.round(0.003d, 2);380 String a = StringUtils.encodeBase64("aaaaa");381 String b = StringUtils.decodeBase64(a);382 System.out.println(result+"==="+a+"==="+b);383 }384 }

 

转载于:https://www.cnblogs.com/lixin890808/p/3904760.html

你可能感兴趣的文章
javascript中关于坐标 大小 的描述
查看>>
8086CPU各寄存器的用途
查看>>
AngularJs中,如何在render完成之后,执行Js脚本
查看>>
Nginx 防盗链
查看>>
如何讓Android系統顯示CJK擴展區漢字
查看>>
Android 下拉选择绑定Value和Text值
查看>>
HTML+CSS小结
查看>>
Android防止按钮连续点击
查看>>
ElasticSearch Mapping中的字段类型
查看>>
数据库中主键和外键的设计原则
查看>>
怎样理解阻塞非阻塞与同步异步的区别?
查看>>
Xcode 警告信息处理:Format string is not a string literal (potentially insecure)
查看>>
关于jQuery表单校验的应用
查看>>
matplotlib----初探------5直方图
查看>>
jquery之ajax
查看>>
Pro Git(中文版)
查看>>
解决phpmyadmin-1800秒超时链接失效问题
查看>>
OpenGL第十一节:拉伸和过滤
查看>>
AlertDialog的onCreateDialog与onPrepareDialog用法
查看>>
swift菜鸟入门视频教程-12-21讲
查看>>