当前位置: 网学 > 编程文档 > JAVA > 正文

Java精确截取字符串

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/04

网学网为需要JAVA的朋友们搜集整理了Java精确截取字符串相关资料,希望对各位网友有所帮助!

 

  Java精确截取字符串,取得字符串前面指定长度字符函数  用java取得字符串的前面部分内容的函数contentStr = contenttemp.substring(0,150);其中要保证最大长度不能超过字符串的长度。下面是我的实现部分代码,以及网上搜索的相关代码:  /* * content内容过长可能会导致xml文件过大,加载太慢。  * 但从seo的角度考虑全部输出有利于搜索引擎,但一般情况下内容也不会太多* 为防止空格换行css无法控制撑大页面,用正则表达式替换掉空格,所以截取前面100个字符,页面显示的内容多少用css控制*/ //str.trim()。replaceAll("s+"," ");String contenttemp = rs.getString(contentName)。trim()。replaceAll("s+","");//NpfDebug.print(contenttemp.length());if(contenttemp.length()>100){//如果长度大于100则截取contenttemp = contenttemp.substring(0, 100);//NpfDebug.print("contenttemp.length()>100?"+contenttemp.length()+" "+contentStr);} rsbody.append(beforCONTENT);rsbody.append(contenttemp);rsbody.append(endCONTENT);开发中经常遇到,字符串过长,无法完全显示的问题  这时候就需要截取我们所需要的长度,后面显示省略号或其他字符。  由于中文字符占两个字节,而英文字符占用一个字节,所以,单纯地判断字符数,效果往往不尽如人意  下面的方法通过判断字符的类型来进行截取,效果还算可以:)  如果大家有其他的解决方法欢迎贴出来,共同学习:)  private String str;private int counterOfDoubleByte;private byte b[];/** * 设置需要被限制长度的字符串* @param str 需要被限制长度的字符串*/ public void setLimitLengthString(String str){ this.str = str;} /** * @param len 需要显示的长度(<font color="red">注意:长度是以byte为单位的,一个汉字是2个byte</font>)  * @param symbol 用于表示省略的信息的字符,如“……”,“>>>”等。  * @return 返回处理后的字符串*/ public String getLimitLengthString(int len, String symbol) throws UnsupportedEncodingException { counterOfDoubleByte = 0;b = str.getBytes("GBK");if(b.length <= len)  return str;for(int i = 0; i < len; i++){ if(b[i] < 0)  counterOfDoubleByte++;} if(counterOfDoubleByte % 2 == 0)  return new String(b, 0, len, "GBK") + symbol;else return new String(b, 0, len - 1, "GBK") + symbol;}  ——————————————————-  /** *//** * 按字节长度截取字符串* @param str 将要截取的字符串参数* @param toCount 截取的字节长度* @param more 字符串末尾补上的字符串* @return 返回截取后的字符串*/ public String substring(String str, int toCount, String more) ……{ int reInt = 0;String reStr = "";if (str == null)  return "";char[] tempChar = str.toCharArray();for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) ……{ String s1 = str.valueOf(tempChar[kk]);byte[] b = s1.getBytes();reInt += b.length;reStr += tempChar[kk];} if (toCount == reInt || (toCount == reInt - 1))  reStr += more;return reStr;}  =================  /** * 取字符串的前toCount个字符* * @param str 被处理字符串* @param toCount 截取长度* @param more 后缀字符串* @version 2004.11.24 * @author zhulx * @return String */ public static String substring(String str, int toCount,String more)  { int reInt = 0;String reStr = "";if (str == null)  return "";char[] tempChar = str.toCharArray();for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) { String s1 = str.valueOf(tempChar[kk]);byte[] b = s1.getBytes();reInt += b.length;reStr += tempChar[kk];} if (toCount == reInt || (toCount == reInt - 1))  reStr += more;return reStr;}得到字符串真实长度和取固定长度的字符串函数  // 截取固定长度子字符串 sSource为字符串iLen为长度function getInterceptedStr(sSource, iLen)  { if(sSource.replace(/[^x00-xff]/g,"xx")。length <= iLen)  { return sSource;} var ELIDED = "";  var str = "";var l = 0;var schar;for(var i=0; schar=sSource.charAt(i); i++)  { str += schar;l += (schar.match(/[^x00-xff]/) != null?2 : 1);if(l >= iLen - ELIDED.length)  { break;} str += ELIDED;  return str;}

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号