import java.io.*; import java.text.DecimalFormat; import org.apache.oro.text.regex.PatternCompiler; import org.apache.oro.text.regex.PatternMatcher; import org.apache.oro.text.regex.Perl5Matcher; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.commons.logging.Log; /** * <p>Title: StringUtils</p> * <p>Description: 字符串工具类; 配合JakartaCommons工具类使用;</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: pubinfo</p> * @author chineseren * @version 1.0 */ public class StringUtils { /** * debug log */ private static Log log = Debuger.getDebuger(StringUtils.class); /** * String charSet 转化 * @param str String * @return String */ public static String toChinese(String str) { if(str == null || str.length() == 0) { return ""; } try { return new String(str.getBytes("ISO8859_1"), "GBK"); } catch(UnsupportedEncodingException ex) { return str; } } /** * 判断字符串是否null或者"" * @param src String * @return boolean */ public static boolean isBlank(String src) { if(null == src || "".equals(src.trim())) { return true; } return false; } /** * @param string - 待判断的字符串是否为null或者空字符串 * @return boolean * @roseuid 3FBE26DE0326 */ public static boolean isNullOrEmpty(String string) { if(string == null || string.trim().equals("")) { return true; } else { return false; } } /** * 把没有实例化的串转化为空串 * @param p_in String * @return String */ public static String convertNull(String str) { if(str == null) { return ""; } else { return str; } } /** * 控制页面显示长度,dataStr为控制长度的字符串,length为字节的长度; * 字符串的字节长度小于显示长度,则原样输出,否则以XXX...的形式输出。 * @param dataStr String * @param length int * @return String */ public static String controlLength(String dataStr, int length) { if(dataStr == null) { return ""; } //转化成格式化的Html dataStr = StringUtils.escape(dataStr); StringBuffer sb = new StringBuffer(); char datach; int lengthi = 0; //字符串的字节长度 int strj = 0; //字符串的实际长度 int lengthi3 = 0; //字节长度-4 //得到字符串的字节长度 while(strj < dataStr.length()) { datach = dataStr.charAt(strj++); if(((datach <= 'z') && (datach >= 'a')) || ((datach <= 'Z') && (datach >= 'A')) || ((datach <= '9') && (datach >= '0'))) { lengthi++; } else { lengthi = lengthi + 2; } } strj = 0; //得到字符串的字节长度-4 while((lengthi3 < length - 4) && (strj < dataStr.length())) { datach = dataStr.charAt(strj++); sb.append(datach); if(((datach <= 'z') && (datach >= 'a')) || ((datach <= 'Z') && (datach >= 'A')) || ((datach <= '9') && (datach >= '0'))) { lengthi3++; } else { lengthi3 = lengthi3 + 2; } } if(lengthi <= length) { return dataStr; } else { sb.append("..."); } return sb.toString(); } /** * 把字符串转化成HTML字符串 * @param str --需要转换的字符串 * @return String --返回把特殊字符转换了的字符串 */ public static String escape(String str) { if(str == null) { return ""; } byte[] data = str.getBytes(); int len = data.length; StringBuffer result = new StringBuffer(len * 2); int begin = 0, count = 0, tt = 0; for(int i = 0; i < len; i++) { switch((char)data[i]) { case '&': result.append(new String(data, begin, count)); result.append("&"); begin = i + 1; count = 0; break; case '\"': result.append(new String(data, begin, count)); result.append("""); begin = i + 1; count = 0; break; case '<': result.append(new String(data, begin, count)); result.append("<"); begin = i + 1; count = 0; break; case '>': result.append(new String(data, begin, count)); result.append(">"); begin = i + 1; count = 0; break; case '\n': result.append(new String(data, begin, count)); result.append("<br>"); begin = i + 1; count = 0; break; case '$': result.append(new String(data, begin, count)); result.append("$$"); begin = i + 1; count = 0; break; case ' ': result.append(new String(data, begin, count)); result.append(" "); begin = i + 1; count = 0; break; default: count++; break; } } if(count > 0) { result.append(new String(data, begin, count)); } return result.toString(); } /** * 把字符串转化成HTML字符串(除了空格) * @param str --需要转换的字符串 * @return String --返回把特殊字符转换了的字符串 */ public static String escape2(String str) { if(str == null) { return ""; } byte[] data = str.getBytes(); int len = data.length; StringBuffer result = new StringBuffer(len * 2); int begin = 0, count = 0, tt = 0; for(int i = 0; i < len; i++) { switch((char)data[i]) { case '&': result.append(new String(data, begin, count)); result.append("&"); begin = i + 1; count = 0; break; case '\"': result.append(new String(data, begin, count)); result.append("""); begin = i + 1; count = 0; break; case '<': result.append(new String(data, begin, count)); result.append("<"); begin = i + 1; count = 0; break; case '>': result.append(new String(data, begin, count)); result.append(">"); begin = i + 1; count = 0; break; case '\n': result.append(new String(data, begin, count)); result.append("<br>"); begin = i + 1; count = 0; break; case '$': result.append(new String(data, begin, count)); result.append("$$"); begin = i + 1; count = 0; break; default: count++; break; } } if(count > 0) { result.append(new String(data, begin, count)); } return result.toString(); } /** * 将textarea输入的文本转化成前台html显示的格式,主要将回车(/r/n)替换成<br>," "替换成 * @param text String * @return String */ public static String textConvertToHtmlText(String text){ if(text != null){ return text.replaceAll("\r\n", "<br>").replaceAll(" ", " "); }else{ return null; } } /** * 全数字判断 * @param strIn String * @return boolean */ public static boolean isNumberString(String strIn) { return isNumberString(strIn, "0123456789"); } /** * 全数字判断,参照字符串strRef可以是:"0123456789","23546"或"0123"等等。 * @param strIn String * @param strRef String * @return boolean */ public static boolean isNumberString(String strIn, String strRef) { if(strIn == null || strIn.length() == 0) return(false); for(int i = 0; i < strIn.length(); i++) { String strTmp = strIn.substring(i, i + 1); if(strRef.indexOf(strTmp, 0) == -1) return(false); } return(true); } /** * 字符串替换,调用了org.apache.commons.lang.StringUtils.replace() * @param strObj 目标字符串 * @param str1 被替换的字符串 * @param str2 替换成的字符串 * @return String */ public static String replace(String strObj, String str1, String str2) { if("".equals(str1)) { return strObj; } return org.apache.commons.lang.StringUtils.replace(strObj, str1, str2); } /** * 根据内容生成摘要 * @param content String * @return String */ public static String createSummary(String content){ if(content == null)return null; String regexp = "<.*?>"; //System.out.println(regexp); content = content.replaceAll(regexp,""); int len = content.length(); if(len > 120){ return content.substring(0, 120); }else{ return content; } } /** * 字符串切割,比如"#sd#kf##dkf##Ej#"按照"#"切割之后length=8,即"#"出现的次数加一 * @param strObj 目标字符串 * @param str1 用于切割的字符串 * @return String[] */ public static String[] split(String strObj, String delimiter) { if(strObj == null) { return null; } if("".equals(strObj) || "".equals(delimiter)) { return new String[] { strObj}; } int count = org.apache.commons.lang.StringUtils.countMatches(strObj, delimiter) + 1; //调用org.apache.commons int length = delimiter.length(); String[] strs = new String[count]; int posPre = 0 - length; int pos = 0; for(int i = 0; i < count - 1; i++) { pos = strObj.indexOf(delimiter, posPre + length); strs[i] = strObj.substring(posPre + length, pos); posPre = pos; } strs[count - 1] = strObj.substring(posPre + length); return strs; } /** * 用于转义单斜杠特殊字符 * @param str String * @return String */ public static final String appendStr(String str) { char c = ' '; StringBuffer sb = new StringBuffer(); for(int i = 0; i < str.length(); i++) { c = str.charAt(i); if(c == '\\') { sb.append("\\\\"); } else { sb.append(c); } } return sb.toString(); } /** * 将reader流中的数据变成String * @param is reader流 * @return String * @throws IOException */ public static String readerToString(Reader is) throws IOException { StringBuffer sb = new StringBuffer(); char[] b = new char[8192]; int n; while((n = is.read(b)) > 0) { sb.append(b, 0, n); } return sb.toString(); } /** * 将input流中的数据变成String * @param is InputStream流 * @throws IOException * @return String */ public static String inputStreamToString(InputStream is) throws IOException { return readerToString(new InputStreamReader(is)); } /** * 返回字符串的前len个字符.例如:输入"abcdefg",3 返回 "abc". * @param value String * @param len int * @return String */ public static String getLmtStr(String value, int len) { if(value == null || value.length() <= len) return value; return value.substring(0, len); } /** * 返回字符串的前len个字符.例如:输入"abcdefg",3 返回 "abc...". * @param value String * @param len int * @return String */ public static String getLmtString(String value, int len) { if(value == null || value.length() <= len) return value; return value.substring(0, len) + "..."; } /** * 输入带html标签的字符串,返回干净的字符串,其中将( ->" "),(<br>->\r\n),(<p>->\r\n\r\n) * @param body String * @return String */ public static String getCleanString(String body) { //替换 ->" ",<br>->\r\n <p>->\r\n\r\n body = body.replaceAll("&[nN][bB][sS][pP];"," "); body = body.replaceAll("<[bB][rR]\\s*>","\r\n"); body = body.replaceAll("<[pP]\\s*>","\r\n\r\n"); //删除所有标签 body = body.replaceAll("<.+?>",""); return body; // String htmlStr = body; //含html标签的字符串 // String textStr = ""; // // // try { // //定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script> } // String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // //定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style> } // String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // //定义HTML标签的正则表达式 // String regEx_html = "<[^>]+>"; // //过滤script标签 // java.util.regex.Pattern p_script = java.util.regex.Pattern.compile(regEx_script, java.util.regex.Pattern.CASE_INSENSITIVE); // java.util.regex.Matcher m_script = p_script.matcher(htmlStr); // htmlStr = m_script.replaceAll(""); // //过滤style标签 // java.util.regex.Pattern p_style = java.util.regex.Pattern.compile(regEx_style, java.util.regex.Pattern.CASE_INSENSITIVE); // java.util.regex.Matcher m_style = p_style.matcher(htmlStr); // htmlStr = m_style.replaceAll(""); // //过滤html标签 // java.util.regex.Pattern p_html = java.util.regex.Pattern.compile(regEx_html, java.util.regex.Pattern.CASE_INSENSITIVE); // java.util.regex.Matcher m_html = p_html.matcher(htmlStr); // htmlStr = m_html.replaceAll(""); // // textStr = htmlStr; // // } catch (Exception e) { // // } // // return textStr; //返回文本字符串 } /** * 返回字符串的len个字符.取前后,去掉中间 例如:输入"abcdefg",3 返回 "ab ... g". * @param value String * @param len int * @return String */ public static String getLmtStrx(String value, int len) { if(value == null || value.length() <= len) return value; value = value.substring(0,len/2) + ".." + value.substring(value.length()-len/2); return value; } /** * 给传入的字符串前补足'0',以使字符串长度为len。例如:输入字符串:"23",4 返回:"0023"。 * @param str String * @param len int * @return String */ public String getZeroStr(String str, int len) { int strlen = str.length(); for(int i = 0; i < len - strlen; i++) { str = "0" + str; } return str; } /** * 输入0000返回0001,输入00000001返回00000002 * @param rank String * @return String */ public static String createRank(String rank){ String prefix = null; String suffix = null; // System.out.println("rank"+rank); // if(rank!=null&&rank.trim().endsWith("wf")){ // rank= rank.trim().substring(0,rank.length()-2); // } if (rank.trim().length() > 4) { prefix = rank.substring(0, rank.length() - 4); suffix = rank.substring(prefix.length()); long tmp = Long.parseLong(suffix); tmp++; int len = suffix.length(); suffix = new Long(tmp).toString(); len = len - suffix.length(); for (int n = 0; n < len; n++) { suffix = "0" + suffix; } rank = prefix + suffix; } else { long tmp = Long.parseLong(rank); tmp++; int len = rank.length(); rank = new Long(tmp).toString(); len = len - rank.length(); for (int n = 0; n < len; n++) { rank = "0" + rank; } } return rank; } /** * [ab][cd] - > ab;cd * @param array String[] * @return String */ public static String getArrayAsString(String[] array){ String rs = ""; if(array != null){ for(int i =0;i < array.length;i ++){ rs += array[i] + ";"; } } if(rs.endsWith(";")){ rs = rs.substring(0,rs.length() - 1); } return rs; } /** * 过滤HTML标签 * @param value String * @return String */ public static String filterScriptHtml(String value) { if(value == null) return ""; else { value = value.replaceAll("<", "<"); value = value.replaceAll(">", ">"); } return value; } /** * @param value double * @param format String "0.00" * @return String */ public static String getFormatDouble(double value, String format) { DecimalFormat d = new DecimalFormat(format); return d.format(value); } /** * 0.34567 -> 0.35 * @param value double * @return String */ public static String getFormatDouble(double value) { return getFormatDouble(value, "0.00"); } /** * double数据类型取小数点位数 * @param doubleData double * @param scale int * @return String */ public static String getDoubleByScale(double doubleData,int scale){ String strFormator = "#." + org.apache.commons.lang.StringUtils.repeat("#",scale); java.text.DecimalFormat formater = new java.text.DecimalFormat(strFormator); String newData = formater.format(doubleData); return newData; } /** * 判断str是否在src String[]中 * @param src 源String[] * @param str 要判断的String * @return boolean */ public static boolean isContain(String[] src, String str) { if(null == src) { return false; } for(int i = 0; i < src.length; i++) { if(str.equalsIgnoreCase(src[i])) { return true; } } return false; } /** * 正则表达式判断(忽略大小写) * @param target String * @param regex String * @return boolean */ public static boolean isMatch(String target, String regex) { PatternCompiler compiler = new Perl5Compiler(); Pattern pattern = null; try { pattern = compiler.compile(regex, Perl5Compiler.CASE_INSENSITIVE_MASK); } catch (Exception e) { return false; } PatternMatcher patternMatcher = new Perl5Matcher(); return patternMatcher.matches(target, pattern); } /** * 产生一个随机id,这个id以系统时间开头 * @return String */ public static String createId() { //System.out.println(System.currentTimeMillis()); String c = "" + getCount(); if (c.length() == 1) { c = "0" + c; } String id = System.currentTimeMillis() + c; int len = 32 - id.length(); return id + org.apache.commons.lang.RandomStringUtils.randomAlphanumeric(len); } private static int counter = 0; protected static int getCount() { synchronized (StringUtils.class) { if (counter < 0) { counter = 0; } counter++; if (counter == 99) { counter = 0; } return counter; } } public static void main(String[] args){ //String b[] = null; ///System.out.print( getArrayAsString(b)); String a = org.trundle.common.FileUtils.read("C:\\Documents and Settings\\admin\\桌面\\aa.txt"); // String abc = " <SPAN lang=EN-US style=\"FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt\">2003年12月4日<SPAN lang=EN-US style=\"FONT-SIZE:ze:中午 9.0pt\">"; System.out.print(getCleanString(a)); // String you你好 = "你好"; // System.out.println(you你好); // abc = "AA&bb+CC&cc"; // String[] b = abc.split("\\+"); // System.out.println(b[0]); System.out.println(getFormatDouble(4.45,"0")); System.out.println(createRank("00000005")); } }
发表评论
-
[Java]JAVA类,JSP,Servlet获取工程路径
2011-04-07 01:17 988在jsp和class文件中调用的相对路径不同。在jsp里,根目 ... -
[Java]通过Java获取优酷视频
2011-04-04 11:52 1785import java.io.IOException; im ... -
[Java]通过Java获取土豆视频
2011-04-04 11:51 858import java.io.IOException; im ... -
[Java]Java 常用类整理二(文件处理类)
2010-08-20 11:01 905import java.io.*; import java. ...
相关推荐
提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...
工作5年精心整理_Java常用工具类源码 收集了java项目开中常用的工具操作类,方法非常全,可应用在大部份java 项目中。 提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档...
详细介绍了java语言中常用的字符串的基本操作。
整理的数据库连接字符串,sqlserver oracle mysql 都有
自己整理的java常用的工具类,字符串、日期,文件,连接多个数据库,MD5,ftp二进制与ascii传输方式区别,日志管理等等等常用类处理
主要介绍了Java编程中字符串的常用操作方法的整理,字符串处理是Java入门学习中的基础知识,需要的朋友可以参考下
华为JAVA上机考试整理 2018,里面包含了很多常用的算法,字符,数组等的操作,对网络上的各大资源都进行了整合。
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...
对于日期,随机字符,时间差计算,拼音转换,金额计算转换,网络图片保存,身份证出生日期获取,字符串首字母获取,年月加减计算等
该类是本人在实际项目开发过程中整理和积累出来的,包括对字符串、时间等的各种处理,绝对物有所值!
StreamUtils 流转换成字符串 StringUtils String SystemUtils 线程池工具类 TimeUtils TimeUtils ToastUtils ToastUtils TransitionTime 用来计算显示的时间是多久之前 ViewAnimationUtils 视图动画工具箱,提供简单...
7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通...
某前辈积累的代码整理,包括字符串解析 数据库连接 正则 访问xml 还有些小算法等
字符串+正则 流 字符流 字节流 语言特性 继承 封装 多态 JVM 多线程与并发 GC机制 GC收集器类型 串行 CMS 并行 G1 算法 复制 标记清理 标记整理 分区 新生代 eden survivor 老年代(old区...
实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用字符串构建器追加字符 100 实例081 去掉...
此文档是xmind格式,内容包括java基础的知识整理,内容包括java的由来、java环境配置、变量和运算符、流程控制、数组与字符串、面向对象、I/O、常用类、线程
本资料开源与IT开发者 论坛,由创建者:iyangxin 编写,本人只做了整理,如有疑惑请联系原作者。...Java基础,JAVA简介 基础语法 数组 常用类 容器 ...字符串 集合 异常处理 IO 流程控制 继承 JAVA高手进阶