Java操作字符串的工具类

简介:

操作字符串的工具类

复制代码
  1 import java.io.ByteArrayOutputStream;
  2 import java.io.IOException;
  3 import java.io.PrintStream;
  4 import java.math.BigDecimal;
  5 import java.util.regex.Matcher;
  6 import java.util.regex.Pattern;
  7 
  8 public class StringUtil {
  9 
 10     /**
 11      * 过滤空NULL
 12      * @param o
 13      * @return 
 14      */
 15     public static String FilterNull(Object o) {
 16         return o != null && !"null".equals(o.toString()) ? o.toString().trim() : "" ;
 17     }
 18     
 19     /**
 20      * 是否为空
 21      * @param o
 22      * @return
 23      */
 24     public static boolean isEmpty(Object o) {
 25         if (o == null) {
 26             return true;
 27         }
 28         if ("".equals(FilterNull(o.toString()))) {
 29             return true;
 30         } else {
 31             return false;
 32         }
 33     }
 34     
 35     /**
 36      * 是否不为空
 37      * @param o
 38      * @return
 39      */
 40     public static boolean isNotEmpty(Object o) {
 41         if (o == null) {
 42             return false;
 43         }
 44         if ("".equals(FilterNull(o.toString()))) {
 45             return false;
 46         } else {
 47             return true;
 48         }
 49     }
 50     
 51     /**
 52      * 是否可转化为数字
 53      * @param o
 54      * @return
 55      */
 56     public static boolean isNum(Object o) {
 57         try {
 58             new BigDecimal(o.toString());
 59             return true;
 60         } catch (Exception e) {
 61         }
 62         return false;
 63     }
 64     
 65     /**
 66      * 是否可转化为Long型数字
 67      * @param o
 68      * @return
 69      */
 70     public static boolean isLong(Object o) {
 71         try {
 72             new Long(o.toString());
 73             return true;
 74         } catch (Exception e) {
 75         }
 76         return false;
 77     }
 78     
 79     /**
 80      * 转化为Long型数字, 不可转化时返回0
 81      * @param o
 82      * @return
 83      */
 84     public static Long toLong(Object o) {
 85         if (isLong(o)) {
 86             return new Long(o.toString());
 87         } else {
 88             return 0L;
 89         }
 90     }
 91     
 92     /**
 93      * 转化为int型数字, 不可转化时返回0
 94      * @param o
 95      * @return
 96      */
 97     public static int toInt(Object o) {
 98         if (isNum(o)) {
 99             return new Integer(o.toString());
100         } else {
101             return 0;
102         }
103     }
104     
105     /**
106      * 按字符从左截取固定长度字符串, 防止字符串超长, 默认截取50
107      * @param o
108      * @return
109      */
110     public static String holdmaxlength(Object o) {
111         int maxlength = 50;
112         if (o == null) {
113             return "";
114         }
115         return subStringByByte(o, maxlength);
116     }
117     
118     /**
119      * 从左截取固定长度字符串, 防止字符串超长, maxlength为0时默认50
120      * @param o
121      * @return
122      */
123     public static String holdmaxlength(Object o, int maxlength) {
124         maxlength = maxlength <= 0 ? 50 : maxlength;
125         if (o == null) {
126             return "";
127         }
128         return subStringByByte(o, maxlength);
129     }
130 
131     /**
132      * 按字节截取字符串
133      * @param str
134      * @param len
135      * @return
136      */
137     private static String subStringByByte(Object o, int len) {
138         if (o == null) {
139             return "";
140         }
141         String str = o.toString();
142         String result = null;
143         if (str != null) {
144             byte[] a = str.getBytes();
145             if (a.length <= len) {
146                 result = str;
147             } else if (len > 0) {
148                 result = new String(a, 0, len);
149                 int length = result.length();
150                 if (str.charAt(length - 1) != result.charAt(length - 1)) {
151                     if (length < 2) {
152                         result = null;
153                     } else {
154                         result = result.substring(0, length - 1);
155                     }
156                 }
157             }
158         }
159         return result;
160     }
161 
162     /**
163      * 逗号表达式_添加
164      * @param commaexpress 原逗号表达式 如 A,B
165      * @param newelement   新增元素 C
166      * @return A,B,C
167      */
168     public static String comma_add(String commaexpress, String newelement) {
169         return comma_rect(FilterNull(commaexpress) + "," + FilterNull(newelement));
170     }
171 
172     /**
173      * 逗号表达式_删除
174      * @param commaexpress  原逗号表达式 如 A,B,C
175      * @param delelement 删除元素 C,A
176      * @return B
177      */
178     public static String comma_del(String commaexpress, String delelement) {
179         if ((commaexpress == null) || (delelement == null) || (commaexpress.trim().equals(delelement.trim()))) {
180             return "";
181         }
182         String[] deletelist = delelement.split(",");
183         String result = commaexpress;
184         for (String delstr : deletelist) {
185             result = comma_delone(result, delstr);
186         }
187         return result;
188     }
189     
190     /**
191      * 逗号表达式_单一删除
192      * @param commaexpress  原逗号表达式 如 A,B,C
193      * @param delelement 删除元素 C
194      * @return A,B
195      */
196     public static String comma_delone(String commaexpress, String delelement) {
197         if ((commaexpress == null) || (delelement == null) || (commaexpress.trim().equals(delelement.trim()))) {
198           return "";
199         }
200         String[] strlist = commaexpress.split(",");
201         StringBuffer result = new StringBuffer();
202         for (String str : strlist) {
203           if ((!str.trim().equals(delelement.trim())) && (!"".equals(str.trim()))) {
204             result.append(str.trim() + ",");
205           }
206         }
207         return result.toString().substring(0, result.length() - 1 > 0 ? result.length() - 1 : 0);
208       }
209 
210     /**
211      * 逗号表达式_判断是否包含元素
212      * @param commaexpress 逗号表达式 A,B,C
213      * @param element C
214      * @return true
215      */
216     public static boolean comma_contains(String commaexpress, String element) {
217         boolean flag = false;
218         commaexpress = FilterNull(commaexpress);
219         element = FilterNull(element);
220         if (!"".equals(commaexpress) && !"".equals(element)) {
221             String[] strlist = commaexpress.split(",");
222             for (String str : strlist) {
223                 if (str.trim().equals(element.trim())) {
224                     flag = true;
225                     break;
226                 }
227             }
228         }
229         return flag;
230     }
231 
232     /**
233      * 逗号表达式_取交集
234      * @param commaexpressA 逗号表达式1  A,B,C
235      * @param commaexpressB 逗号表达式2  B,C,D
236      * @return B,C
237      */
238     public static String comma_intersect(String commaexpressA, String commaexpressB) {
239         commaexpressA = FilterNull(commaexpressA);
240         commaexpressB = FilterNull(commaexpressB);
241         StringBuffer result = new StringBuffer();
242         String[] strlistA = commaexpressA.split(",");
243         String[] strlistB = commaexpressB.split(",");
244         for (String boA : strlistA) {
245             for (String boB : strlistB) {
246                 if (boA.trim().equals(boB.trim())) {
247                     result.append(boA.trim() + ",");
248                 }
249             }
250         }
251         return comma_rect(result.toString());
252     }
253 
254     /**
255      * 逗号表达式_规范
256      * @param commaexpress  逗号表达式  ,A,B,B,,C
257      * @return A,B,C
258      */
259     public static String comma_rect(String commaexpress) {
260         commaexpress = FilterNull(commaexpress);
261         String[] strlist = commaexpress.split(",");
262         StringBuffer result = new StringBuffer();
263         for (String str : strlist) {
264             if (!("".equals(str.trim())) && !("," + result.toString() + ",").contains("," + str + ",") && !"null".equals(str)) {
265                 result.append(str.trim() + ",");
266             }
267         }
268         return result.toString().substring(0, (result.length() - 1 > 0) ? result.length() - 1 : 0);
269     }
270     
271     /**
272      * 逗号表达式_反转
273      * @param commaexpress A,B,C
274      * @return C,B,A
275      */
276     public static String comma_reverse(String commaexpress) {
277         commaexpress = FilterNull(commaexpress);
278         String[] ids = commaexpress.split(",");
279         StringBuffer str = new StringBuffer();
280         for (int i = ids.length - 1; i >= 0; i--) {
281             str.append(ids[i] + ",");
282         }
283         return comma_rect(str.toString());
284     }
285 
286     /**
287      * 逗号表达式_获取首对象
288      * @param commaexpress A,B,C
289      * @return A
290      */
291     public static String comma_first(String commaexpress) {
292         commaexpress = FilterNull(commaexpress);
293         String[] ids = commaexpress.split(",");
294         System.out.println("length:" + ids.length);
295         if ((ids != null) && (ids.length > 0)) {
296             return ids[0];
297         }
298         return null;
299     }
300 
301     /**
302      * 逗号表达式_获取尾对象
303      * @param commaexpress A,B,C
304      * @return C
305      */
306     public static String comma_last(String commaexpress) {
307         commaexpress = FilterNull(commaexpress);
308         String[] ids = commaexpress.split(",");
309         if ((ids != null) && (ids.length > 0)) {
310             return ids[(ids.length - 1)];
311         }
312         return null;
313     }
314 
315     /**
316      * 替换字符串,支持字符串为空的情形
317      * @param strData
318      * @param regex
319      * @param replacement
320      * @return
321      */
322     public static String replace(String strData, String regex, String replacement) {
323         return strData == null ? "" : strData.replaceAll(regex, replacement);
324     }
325         
326     /**
327      * 字符串转为HTML显示字符
328      * @param strData
329      * @return
330      */
331     public static String String2HTML(String strData){
332         if( strData == null || "".equals(strData) ){
333             return "" ;
334         }
335         strData = replace(strData, "&", "&amp;");
336         strData = replace(strData, "<", "&lt;"); 
337         strData = replace(strData, ">", "&gt;");
338         strData = replace(strData, "\"", "&quot;");
339         return strData;
340     }
341     
342     /**     * 把异常信息转换成字符串,以方便保存 */
343     public static String getexceptionInfo(Exception e){
344         ByteArrayOutputStream baos = new ByteArrayOutputStream();
345         try{
346             e.printStackTrace(new PrintStream(baos));
347         }finally{
348             try {
349                 baos.close();
350             } catch (IOException e1) {
351                 e1.printStackTrace();
352             }
353         }
354         return baos.toString();
355     }
356     
357     /** 过滤特殊符号 */ 
358     public static String regex(String str){
359         Pattern pattern = Pattern.compile("[0-9-:/ ]");// 中文汉字编码区间
360         Matcher matcher;
361         char[] array = str.toCharArray();
362         for (int i = 0; i < array.length; i++) {
363             matcher = pattern.matcher(String.valueOf(array[i]));
364             if (!matcher.matches()) {// 空格暂不替换
365                 str = str.replace(String.valueOf(array[i]), "");// 特殊字符用空字符串替换
366             }
367         }
368          
369         return str;    
370     }
371     
372     public static String comma_insert(String commaexpress, String newelement,int index){
373         int length = commaexpress.length();
374         if ( index > length ) {
375             index = length;
376         }else if ( index < 0){
377             index = 0;
378         }
379         String result = commaexpress.substring(0, index) + newelement + commaexpress.substring(index, commaexpress.length());
380         return result;
381     }
382     
383     /**
384      * 将"/"替换成"\"
385      * @param strDir
386      * @return
387      */
388     public static String changeDirection(String strDir) {
389         String s = "/";
390         String a = "\\";
391         if (strDir != null && !" ".equals(strDir)) {
392             if (strDir.contains(s)) {
393                 strDir = strDir.replace(s, a);
394             }
395         }
396         return strDir;
397     }
398 
399     /**
400      * 去除字符串中 头和尾的空格,中间的空格保留
401      * 
402      * @Title: trim
403      * @Description: TODO
404      * @return String
405      * @throws
406      */
407     public static String trim(String s) {
408         int i = s.length();// 字符串最后一个字符的位置
409         int j = 0;// 字符串第一个字符
410         int k = 0;// 中间变量
411         char[] arrayOfChar = s.toCharArray();// 将字符串转换成字符数组
412         while ((j < i) && (arrayOfChar[(k + j)] <= ' '))
413         ++j;// 确定字符串前面的空格数
414         while ((j < i) && (arrayOfChar[(k + i - 1)] <= ' '))
415         --i;// 确定字符串后面的空格数
416         return (((j > 0) || (i < s.length())) ? s.substring(j, i) : s);// 返回去除空格后的字符串
417     }
418     /**
419      * 得到大括号中的内容
420      * @param str
421      * @return
422      */
423     public static String getBrackets(String str) {
424         int a = str.indexOf("{");
425         int c = str.indexOf("}");
426         if (a >= 0 && c >= 0 & c > a) {
427             return (str.substring(a + 1, c));
428         } else {
429             return str;
430         }
431     }
432 
433     /**
434      * 将字符串中所有的,替换成|
435      * 
436      * @param str
437      * @return
438      */
439     public static String commaToVerti(String str) {
440         if (str != null && !"".equals(str) && str.contains(",")) {
441             return str.replaceAll(",", "|");
442         } else {
443             return str;
444         }
445     }
446 
447     /**
448      * 去掉字符串中、前、后的空格
449      * @param args
450      * @throws IOException
451      */
452     public static String extractBlank(String name) {
453         if (name != null && !"".equals(name)) {
454             return name.replaceAll(" +", "");
455         } else {
456             return name;
457         }
458     }
459 
460     /**
461      * 将null换成""
462      * @param str
463      * @return
464      */
465     public static String ConvertStr(String str) {
466         return str != null && !"null".equals(str) ? str.trim() : "";
467     }
468     
469     public static void main(String[] args){
470         System.out.println(isNum("a"));
471         System.out.println(isNum("-1"));
472         System.out.println(isNum("01"));
473         System.out.println(isNum("1E3"));
474         System.out.println(isNum("1.a"));
475         System.out.println(isLong("014650"));
476         System.out.println(Long.parseLong("014650"));
477     }
478 }
复制代码

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5760588.html,如需转载请自行联系原作者

相关文章
|
12天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
90 60
|
2天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
15 6
|
29天前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
41 15
|
1月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
44 4
|
29天前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
96 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
1月前
|
Java
Java 些许公共工具类
Java 些许公共工具类
13 1
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
49 3
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
16 2
|
6月前
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
67 0
|
3月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
59 1
下一篇
无影云桌面