<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

    Java精確截取字符串

     Java精確截取字符串,取得字符串前面指定長度字符函數(shù)

      用java取得字符串的前面部分內(nèi)容的函數(shù)contentStr = contenttemp.substring(0, 150);其中要保證最大長度不能超過字符串的長度。下面是我的實現(xiàn)部分代碼,以及網(wǎng)上搜索的相關代碼:

  • /* 
  • * content內(nèi)容過長可能會導致xml文件過大,加載太慢。 
  • * 但從seo的角度考慮全部輸出有利于搜索引擎,但一般情況下內(nèi)容也不會太多 
  • * 為防止空格換行css無法控制撐大頁面,用正則表達式替換掉空格,所以截取前面100個字符,頁面顯示的內(nèi)容多少用css控制 
  •  *zdz的作品,流風的作品 
  • */ 
  • //str.trim().replaceAll("\\s+"," ");  
  • String contenttemp = rs.getString(contentName).trim().replaceAll("\\s+","");  
  • //NpfDebug.print(contenttemp.length()); 
  • if(contenttemp.length()>100){//如果長度大于100則截取 
  •  contenttemp = contenttemp.substring(0100);  
  •  //NpfDebug.print("contenttemp.length()>100 ? "+contenttemp.length()+"\n"+contentStr); 
  • }  
  • rsbody.append(beforCONTENT);  
  • rsbody.append(contenttemp);  
  • rsbody.append(endCONTENT);
  •   開發(fā)中經(jīng)常遇到,字符串過長,無法完全顯示的問題

      這時候就需要截取我們所需要的長度,后面顯示省略號或其他字符。

      由于中文字符占兩個字節(jié),而英文字符占用一個字節(jié),所以,單純地判斷字符數(shù),效果往往不盡如人意

      下面的方法通過判斷字符的類型來進行截取,效果還算可以:)

      如果大家有其他的解決方法歡迎貼出來,共同學習:)

  • 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;  
  • }  
  •    
  •    
  •    
  • -------------------  
  •    
  • /** *//** 
  •     * 按字節(jié)長度截取字符串 
  •     * @param str 將要截取的字符串參數(shù) 
  •     * @param toCount 截取的字節(jié)長度 
  •     * @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;  
  •     }
  •   得到字符串真實長度和取固定長度的字符串函數(shù)

  • // 截取固定長度子字符串 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;   
  • }
  • posted on 2011-12-22 11:12 順其自然EVO 閱讀(304) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    <2011年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統(tǒng)計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日韩在线观看免费视频| 337p日本欧洲亚洲大胆色噜噜 | 亚洲五月综合网色九月色| 最近免费中文字幕视频高清在线看| 亚洲aⅴ无码专区在线观看| 国产成人精品日本亚洲专区61 | 亚洲日韩在线中文字幕综合| 中文字幕亚洲第一| 黄色网址免费大全| 夜夜爽妓女8888视频免费观看| 亚洲AV日韩AV天堂久久| 国产美女无遮挡免费网站| 国产永久免费高清在线| 亚洲欧美日韩久久精品| 国产精品亚洲一区二区三区在线| 免费精品人在线二线三线区别| 一级毛片免费一级直接观看| 亚洲国产亚洲综合在线尤物| 亚洲国产综合无码一区二区二三区| 91九色视频无限观看免费| 免费无码婬片aaa直播表情| 亚洲理论片中文字幕电影| 国产精品V亚洲精品V日韩精品| 免费a级毛片无码a∨蜜芽试看| 毛片基地看看成人免费| 日本亚洲欧美色视频在线播放 | 中文字幕看片在线a免费| wwwxxx亚洲| 亚洲福利视频一区| 久久亚洲AV永久无码精品| 成年女人毛片免费播放人 | 国产一区二区三区免费看| 最近中文字幕电影大全免费版| 一本久久免费视频| 毛片亚洲AV无码精品国产午夜| 亚洲六月丁香六月婷婷色伊人 | 亚洲中文字幕无码一区| 日韩特黄特色大片免费视频| 100000免费啪啪18免进| 免费人成在线观看网站| 久久www免费人成看国产片|