E1ED922C1E9526DD63272D7EC5C6CB77
2020-10-10 58a62d1c1bb97080e855f404e5529dd96766640b
提交 | 用户 | age
5c5945 1 package com.hx.util;
E 2
3 import java.io.UnsupportedEncodingException;
4 import java.text.MessageFormat;
5 import java.util.Map;
6 import java.util.regex.Matcher;
7 import java.util.regex.Pattern;
8
9 /**
10  * 字符串工具类
11  * 
12  * @author ThinkGem
13  * @version 2013-05-22
14  */
15 public class StringUtils {
16
17     private static final char SEPARATOR = '_';
18     private static final String CHARSET_NAME = "UTF-8";
19
20     /**
21      * 格式化字符串,替换原字符串中的{0}, {1},按顺序替换
22      * 
23      * @param oriStr
24      * @param args
25      * @return
26      */
27     public static String format(String oriStr, Object... args) {
28         return MessageFormat.format(oriStr, args);
29     }
30
31     /**
32      * 转换为字节数�?
33      * 
34      * @param str
35      * @return
36      */
37     public static byte[] getBytes(String str) {
38         if (str != null) {
39             try {
40                 return str.getBytes(CHARSET_NAME);
41             } catch (UnsupportedEncodingException e) {
42                 return null;
43             }
44         } else {
45             return null;
46         }
47     }
48
49     /**
50      * 只取后两�?
51      * 
52      * @param str
53      * @return
54      */
55     public static String getLastTwoChars(String str) {
56         if (null != str && str.trim().length() > 0) {
57             str = str.trim();
58             int len = str.length();
59             if (len == 2) {
60                 return str;
61             } else if (len > 2) {
62                 return str.substring(len - 2);
63             }
64         }
65         return "";
66     }
67
68     /**
69      * 只取后三�?
70      * 
71      * @param str
72      * @return
73      */
74     public static String getLastThreeChars(String str) {
75         if (null != str && str.trim().length() > 0) {
76             str = str.trim();
77             int len = str.length();
78             if (len == 3) {
79                 return str;
80             } else if (len > 3) {
81                 return str.substring(len - 3);
82             }
83         }
84         return "";
85     }
86
87     /**
88      * 替换为手机识别的HTML,去掉样式及属�?�,保留回车�?
89      * 
90      * @param html
91      * @return
92      */
93     public static String replaceMobileHtml(String html) {
94         if (html == null) {
95             return "";
96         }
97         return html.replaceAll("<([a-z]+?)\\s+?.*?>", "<$1>");
98     }
99
100     /**
101      * 驼峰命名法工�?
102      * 
103      * @return toCamelCase("hello_world") == "helloWorld"
104      *         toCapitalizeCamelCase("hello_world") == "HelloWorld"
105      *         toUnderScoreCase("helloWorld") = "hello_world"
106      */
107     public static String toCamelCase(String s) {
108         if (s == null) {
109             return null;
110         }
111
112         s = s.toLowerCase();
113
114         StringBuilder sb = new StringBuilder(s.length());
115         boolean upperCase = false;
116         for (int i = 0; i < s.length(); i++) {
117             char c = s.charAt(i);
118
119             if (c == SEPARATOR) {
120                 upperCase = true;
121             } else if (upperCase) {
122                 sb.append(Character.toUpperCase(c));
123                 upperCase = false;
124             } else {
125                 sb.append(c);
126             }
127         }
128
129         return sb.toString();
130     }
131
132     /**
133      * 驼峰命名法工�?
134      * 
135      * @return toCamelCase("hello_world") == "helloWorld"
136      *         toCapitalizeCamelCase("hello_world") == "HelloWorld"
137      *         toUnderScoreCase("helloWorld") = "hello_world"
138      */
139     public static String toCapitalizeCamelCase(String s) {
140         if (s == null) {
141             return null;
142         }
143         s = toCamelCase(s);
144         return s.substring(0, 1).toUpperCase() + s.substring(1);
145     }
146
147     /**
148      * 驼峰命名法工�?
149      * 
150      * @return toCamelCase("hello_world") == "helloWorld"
151      *         toCapitalizeCamelCase("hello_world") == "HelloWorld"
152      *         toUnderScoreCase("helloWorld") = "hello_world"
153      */
154     public static String toUnderScoreCase(String s) {
155         if (s == null) {
156             return null;
157         }
158
159         StringBuilder sb = new StringBuilder();
160         boolean upperCase = false;
161         for (int i = 0; i < s.length(); i++) {
162             char c = s.charAt(i);
163
164             boolean nextUpperCase = true;
165
166             if (i < (s.length() - 1)) {
167                 nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
168             }
169
170             if ((i > 0) && Character.isUpperCase(c)) {
171                 if (!upperCase || !nextUpperCase) {
172                     sb.append(SEPARATOR);
173                 }
174                 upperCase = true;
175             } else {
176                 upperCase = false;
177             }
178
179             sb.append(Character.toLowerCase(c));
180         }
181
182         return sb.toString();
183     }
184
185     /**
186      * 根据规则regExpr,判断字符内容是否匹配
187      * <p>
188      * 利用正则表达式规则判断,待验证的字符内容是否符合要求�? <br>
189      * 比如'[0-9]*'即判断是否为数字的规�?, '^[a-z0-9_-]{3,15}$'即判断是否为用户名的规则,<br>
190      * '((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})'即判断是否为密码的规�?,<br>
191      * '^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$'即email规则,<br>
192      * '([^\s]+(\.(?i)(jpg|png|gif|bmp))$)'即判断某图片文件格式,<br>
193      * '^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$'即IP规则.
194      *
195      * 
196      * @param regExpr
197      *            正则表达�?
198      * @param content
199      *            待验证的字符内容
200      * @return boolean
201      */
202     public static boolean isMatch(String regExpr, String content) {
203         if (StringUtils.isEmpty(regExpr, content))
204             return false;
205
206         Pattern pattern = Pattern.compile(regExpr);
207         Matcher matcher = pattern.matcher(content);
208
209         return matcher.matches();
210     }
211
212     /**
213      * 正则判断纯数�?
214      * 
215      * @param str
216      * @return
217      */
218     public static boolean isNumeric(String str) {
219         Pattern pattern = Pattern.compile("[0-9]*");
220         Matcher isNum = pattern.matcher(str);
221         if (!isNum.matches()) {
222             return false;
223         }
224         return true;
225     }
226
227     public static boolean isEmpty(String str) {
228         return null == str || str.trim().length() == 0 || "undefined".equals(str);
229     }
230
231     /**
232      * 判断字符内容中是否存在一个为空的字符�?
233      * <p>
234      * 如果在所有的字符串内容中,只要存在某�?个字符串为空,则返回为true, 如果�?有的字符串内容中,不存在�?个空字符串,则返回为false.
235      * 
236      * @param strings
237      * @return boolean
238      */
239     public static boolean isEmpty(String... strings) {
240         if (strings == null)
241             return true;
242
243         for (String str : strings) {
244             if (StringUtils.isEmpty(str))
245                 return true;
246         }
247
248         return false;
249     }
250
251     public static boolean isAllEmpty(String... strings) {
252         if (strings == null)
253             return true;
254
255         for (String str : strings) {
256             if (!StringUtils.isEmpty(str))
257                 return false;
258         }
259
260         return true;
261     }
262
263     /**
264      * @param strings
265      *            该数组是否有�?
266      * @return
267      */
268     public static boolean hasContent(String[] strings) {
269         if (strings != null && strings.length > 0)
270             return true;
271
272         return false;
273     }
274
275     /**
276      * @param params
277      *            该map是否有�??
278      * @return
279      */
280     public static boolean hasContent(Map<?, ?> params) {
281         if (params != null && params.size() > 0)
282             return true;
283
284         return false;
285     }
286
287     public static boolean isNumeric2(String str) {
288         if (null == str || isEmpty(str)) {
289             return false;
290         }
291         char[] chars = str.toCharArray();
292         for (char c : chars) {
293             if (!Character.isDigit(c))
294                 return false;
295         }
296         return true;
297     }
298
299     public static int parseInt(String string) {
300         if (null != string && isNumeric2(string)) {
301             return Integer.parseInt(string);
302         }
303         return 0;
304     }
305
306 }