StringHelper--封转自己的字符串工具类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringHelper--封转自己的字符串工具类相关的知识,希望对你有一定的参考价值。

我们每次开发项目,都会有很多的关于字符串的处理,字符串的处理太常见了,无法避免,那么这时如果可以把常用的字符串处理封装成类,在以后的开发中应该会减少一些工作量,下面代码对一些常用的字符串处理进行了封装,如果遇上了其他的关于字符串处理可以不断加入进来。

现在已经实现的功能有:

1,判断一个字符串是否为 null 或 空串 或 空白,

2,判断一个字符串是否不是null且不是空串、不是空白,

3,判断一个字符串变量是否为 null,

4,判断一个字符串是否为 空串,

5,比较两个非空(不是null,不是空串、不是空白)字符串是否"相等",

6,比较两个字符串是否 "相等",

7,随机生成一个 32 位长度的 字符串( UUID ),

8,通过 SHA1 对字符串进行加密,

9,对 给定字符串 进行 md5 加密,(对密码进行加密使用)

10,检测邮箱合法性,

11,Double进行四舍五入,得到指定位数的小数,

12,根据Unicode编码完美的判断中文汉字和符号,

13,判断是否包含中文汉字,

14判断是否只有中文汉字,

15判断邮政编码.

代码有详细备注,不做说明。如下:

  1 public final class StringHelper {  
  2       
  3     /** 
  4      * 判断一个字符串是否为 null 或 空串 或 空白 
  5      * @param source 需要判断的字符串 
  6      * @return 当字符串为 null 或 为 空白、空串 时返回 true 
  7      */  
  8     public static boolean empty( String source ) {  
  9         return source == null || source.trim().isEmpty()  ;  
 10     }  
 11       
 12     /** 
 13      * 判断一个字符串是否不是null且不是空串、不是空白 
 14      * @param source 需要判断的字符串 
 15      * @return 当 字符串是不是null且不是空串也不是空白时返回 true 
 16      */  
 17     public static boolean notEmpty( String source ) {  
 18         return source != null && source.trim().length() > 0 ;  
 19     }  
 20       
 21     /** 
 22      * 判断一个字符串变量是否为 null 
 23      * @param source 需要判断的字符串 
 24      * @return 当 字符串变量 为 null 时返回 true 
 25      */  
 26     public static boolean isNull( String source ) {  
 27         return source == null ;  
 28     }  
 29       
 30     /** 
 31      * 判断一个字符串是否为 空串 
 32      * @param source 需要判断的字符串 
 33      * @return 当字符串中的值是 空串 或 空白 串时返回 true 
 34      */  
 35     public static boolean emptyString( String source ) {  
 36         return ( source != null ) && source.length() == source.trim().length() ;  
 37     }  
 38       
 39     /** 
 40      * 判断一个字符串是否为 空白 串 
 41      * @param source 需要判断的字符串 
 42      * @return 当字符串中的值是 空白 串时返回 true 
 43      */  
 44     public static boolean blank( String source ){  
 45         return ( source != null ) && source.length() > source.trim().length()  ;  
 46     }  
 47       
 48     /** 
 49      * 比较两个非空(不是null,不是空串、不是空白)字符串是否"相等" 
 50      * @param one 第一个需要比较的字符串 
 51      * @param theOther 另一个参与比较的字符串 
 52      * @return 当 两个字符串 都不为空串 且 内容完全一致 (剔除首尾空白后、大小写也一致)时返回 true 
 53      */  
 54     public static boolean equals( String one , String theOther) {  
 55         return equals(one, theOther,true,false);  
 56     }  
 57       
 58     /** 
 59      * 比较两个字符串是否 "相等" 
 60      * @param one 参与比较的第一个字符串 
 61      * @param theOther 参与比较的另一个字符串 
 62      * @param escapeSpace 是否需要剔除首尾空白 ( true 表示需要剔除首尾空白,false 表示不剔除 ) 
 63      * @param ignoreCase 是否忽略大小写 ( true 表示忽略大小写 ,false 表示不忽略大小写 ) 
 64      * @return 
 65      */  
 66     public static boolean equals( String one , String theOther , boolean escapeSpace , boolean ignoreCase) {  
 67           
 68         if( one == null || theOther == null ){  
 69             return false ;  
 70         }  
 71           
 72         if( escapeSpace ){  
 73             one = one.trim();  
 74             theOther = theOther.trim();  
 75         }  
 76           
 77         return ignoreCase ? one.equalsIgnoreCase( theOther ) : one.equals( theOther ) ;  
 78     }  
 79       
 80     /** 
 81      * 随机生成一个 32 位长度的 字符串( UUID ) 
 82      * @return 
 83      */  
 84     public static String random(){  
 85         UUID uuid = UUID.randomUUID();//36位长度(包含了 四个 - )  
 86         String uuidString = uuid.toString();  
 87         uuidString = uuidString.replace("-", "");  
 88         uuidString = uuidString.toUpperCase();  
 89         return uuidString;  
 90     }  
 91       
 92     /** 
 93      * 通过 SHA1 对字符串进行加密 
 94      * @param source 
 95      * @return 
 96      */  
 97     public static String sha1(String source ){  
 98         try{  
 99             MessageDigest md = MessageDigest.getInstance("SHA1");  
100             BASE64Encoder encoder = new BASE64Encoder();  
101             return encoder.encode( md.digest( source.getBytes() ) );  
102         }catch(NoSuchAlgorithmException e){  
103             e.printStackTrace();  
104             return null;  
105         }  
106     }  
107       
108     /** 
109      * 对 给定字符串 进行 md5 加密 
110      * @param source 待加密的字符串 
111      * @return 
112      */  
113     protected static String md524(String source ){  
114         try{  
115             MessageDigest md = MessageDigest.getInstance("MD5");  
116             BASE64Encoder encoder = new BASE64Encoder();  
117             return encoder.encode( md.digest(source.getBytes()) );  
118         }catch(NoSuchAlgorithmException e){  
119             e.printStackTrace();  
120             return null;  
121         }  
122     }  
123       
124     /** 
125      * 对字符串进行MD5加密 
126      * @param source 需要加密的字符串 
127      * @return 返回加密后的字符串 
128      */  
129     public static final String MD5(String source){  
130         if(source != null){  
131             StringBuffer md5 = new StringBuffer();  
132             MessageDigest md = null;  
133             try{  
134                 md = MessageDigest.getInstance("MD5");  
135                 md.update(source.getBytes());  
136                 byte[] mdBytes = md.digest();  
137                   
138                 for(int i = 0;i < mdBytes.length;i++){  
139                     int temp;  
140                     if(mdBytes[i] < 0){  
141                         temp = 256+mdBytes[i];  
142                     }else{  
143                         temp = mdBytes[i];  
144                     }  
145                     if(temp < 16){  
146                         md5.append("0");  
147                     }  
148                     md5.append(Integer.toString(temp,16 ));  
149                 }  
150             }catch(NoSuchAlgorithmException e){  
151                 e.printStackTrace();  
152             }  
153             return md5.toString().toUpperCase();  
154         }  
155         return null;  
156     }  
157     /** 
158      * 检测邮箱合法性 
159      *  
160      * @param email 
161      * @return 
162      */  
163     public static boolean isEmail(String email) {  
164         if ((email == null) || (email.trim().length() == 0)) {  
165             return false;  
166         }  
167         String regEx = "^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$";  
168         Pattern p = Pattern.compile(regEx);  
169         Matcher m = p.matcher(email.trim().toLowerCase());  
170    
171         return m.find();  
172     }  
173   
174    
175     /** 
176      * Double进行四舍五入 
177      *  
178      * @param v 
179      * @param scale 
180      * @return 
181      */  
182     public static double getDouble(Double v, int scale) {  
183    
184         if (scale < 0) {  
185             scale = 0;  
186         }  
187         BigDecimal b = new BigDecimal(v);  
188         BigDecimal one = new BigDecimal("1");  
189         return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();  
190     }  
191    
192     /** 
193      * 得到指定位数的小数 
194      * @param v 
195      * @param scale 
196      * @return 
197      */  
198     public static String getDecimals(Double v, int scale) {  
199    
200         return String.format("%." + String.valueOf(scale) + "f", v);  
201    
202     }  
203     /** 
204      * 根据Unicode编码完美的判断中文汉字和符号 
205      *  
206      * @param c 
207      * @return 
208      */  
209     private static boolean isChinese(char c) {  
210         Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);  
211         if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS  
212                 || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS  
213                 || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A  
214                 || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B  
215                 || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION  
216                 || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS  
217                 || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {  
218             return true;  
219         }  
220         return false;  
221     }  
222    
223     /** 
224      * 判断是否包含中文汉字 
225      *  
226      * @param strName 
227      * @return 
228      */  
229     public static boolean isChineseHave(String strName) {  
230         char[] ch = strName.toCharArray();  
231         for (int i = 0; i < ch.length; i++) {  
232             char c = ch[i];  
233             if (isChinese(c)) {  
234                 return true;  
235             }  
236         }  
237         return false;  
238     }  
239    
240     /** 
241      * 判断是否只有中文汉字 
242      *  
243      * @param strName 
244      * @return 
245      */  
246     public static boolean isChineseAll(String strName) {  
247         char[] ch = strName.toCharArray();  
248         for (int i = 0; i < ch.length; i++) {  
249             char c = ch[i];  
250             if (!isChinese(c)) {  
251                 return false;  
252             }  
253         }  
254         return true;  
255     }  
256    
257     /** 
258      * 判断邮政编码 
259      *  
260      * @param str 
261      * @return 
262      */  
263     public static boolean isCard(String str) {  
264         Pattern p = Pattern.compile("[1-9]\\d{5}(?!\\d)");  
265         Matcher m = p.matcher(str);  
266         return m.matches();  
267     }  
268    
269 }  

以上是关于StringHelper--封转自己的字符串工具类的主要内容,如果未能解决你的问题,请参考以下文章

java基础面向对象之封装

面向对象的三大特点

java:工作中常用到的工具类

工具类编写规范

Json取值工具类

Java常用工具类(计算MD5,验证码随机生成,天数差值计算)