`
snowstone
  • 浏览: 19150 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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()+"\n"+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;   
}

 参考网址:

http://developer.51cto.com/art/201112/308444.htm

http://www.cnblogs.com/myphoebe/archive/2011/12/20/2294171.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics