自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java精確截取字符串

開發(fā) 后端
本文主要介紹了Java精確截取字符串,取得字符串前面指定長度字符函數(shù)。

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

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

  1. /*  
  2. * content內(nèi)容過長可能會導(dǎo)致xml文件過大,加載太慢。  
  3. * 但從seo的角度考慮全部輸出有利于搜索引擎,但一般情況下內(nèi)容也不會太多  
  4. * 為防止空格換行css無法控制撐大頁面,用正則表達式替換掉空格,所以截取前面100個字符,頁面顯示的內(nèi)容多少用css控制  
  5.  
  6.  *zdz的作品,流風(fēng)的作品  
  7. */ 
  8. //str.trim().replaceAll("\\s+"," ");   
  9. String contenttemp = rs.getString(contentName).trim().replaceAll("\\s+","");  
  10. //NpfDebug.print(contenttemp.length());  
  11. if(contenttemp.length()>100){//如果長度大于100則截取  
  12.  contenttemp = contenttemp.substring(0100);  
  13.  //NpfDebug.print("contenttemp.length()>100 ? "+contenttemp.length()+"\n"+contentStr);  
  14. }  
  15. rsbody.append(beforCONTENT);  
  16. rsbody.append(contenttemp);  
  17. rsbody.append(endCONTENT);  

開發(fā)中經(jīng)常遇到,字符串過長,無法完全顯示的問題

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

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

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

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

  1. private String str;  
  2. private int counterOfDoubleByte;  
  3. private byte b[];  
  4. /**  
  5. * 設(shè)置需要被限制長度的字符串  
  6. * @param str 需要被限制長度的字符串  
  7. */ 
  8. public void setLimitLengthString(String str){  
  9.    this.str = str;  
  10. }  
  11. /**  
  12. * @param len 需要顯示的長度(<font color="red">注意:長度是以byte為單位的,一個漢字是2個byte</font>)  
  13. * @param symbol 用于表示省略的信息的字符,如“...”,“>>>”等。  
  14. * @return 返回處理后的字符串  
  15. */ 
  16. public String getLimitLengthString(int len, String symbol) throws UnsupportedEncodingException {  
  17.    counterOfDoubleByte = 0;  
  18.    b = str.getBytes("GBK");  
  19.    if(b.length <= len)  
  20.      return str;  
  21.    for(int i = 0; i < len; i++){  
  22.      if(b[i] < 0)  
  23.        counterOfDoubleByte++;  
  24.    }  
  25.  
  26.    if(counterOfDoubleByte % 2 == 0)  
  27.      return new String(b, 0, len, "GBK") + symbol;  
  28.    else 
  29.      return new String(b, 0, len - 1"GBK") + symbol;  
  30. }  
  31.    
  32.    
  33.    
  34. -------------------  
  35.    
  36. /** *//**  
  37.     * 按字節(jié)長度截取字符串  
  38.     * @param str 將要截取的字符串參數(shù)  
  39.     * @param toCount 截取的字節(jié)長度  
  40.     * @param more 字符串末尾補上的字符串  
  41.     * @return 返回截取后的字符串  
  42.     */ 
  43.    public String substring(String str, int toCount, String more) ...{  
  44.      int reInt = 0;  
  45.      String reStr = "";  
  46.      if (str == null)  
  47.        return "";  
  48.      char[] tempChar = str.toCharArray();  
  49.      for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) ...{  
  50.        String s1 = str.valueOf(tempChar[kk]);  
  51.        byte[] b = s1.getBytes();  
  52.        reInt += b.length;  
  53.        reStr += tempChar[kk];  
  54.      }  
  55.      if (toCount == reInt || (toCount == reInt - 1))  
  56.        reStr += more;  
  57.      return reStr;  
  58.    }  
  59.    
  60. =================  
  61.    
  62. /**  
  63.      * 取字符串的前toCount個字符  
  64.      *  
  65.      * @param str 被處理字符串  
  66.      * @param toCount 截取長度  
  67.      * @param more 后綴字符串  
  68.      * @version 2004.11.24  
  69.      * @author zhulx  
  70.      * @return String  
  71.      */ 
  72.     public static String substring(String str, int toCount,String more)  
  73.     {  
  74.       int reInt = 0;  
  75.       String reStr = "";  
  76.       if (str == null)  
  77.         return "";  
  78.       char[] tempChar = str.toCharArray();  
  79.       for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {  
  80.         String s1 = str.valueOf(tempChar[kk]);  
  81.         byte[] b = s1.getBytes();  
  82.         reInt += b.length;  
  83.         reStr += tempChar[kk];  
  84.       }  
  85.       if (toCount == reInt || (toCount == reInt - 1))  
  86.         reStr += more;  
  87.       return reStr;  
  88.     } 

得到字符串真實長度和取固定長度的字符串函數(shù)

  1. // 截取固定長度子字符串 sSource為字符串iLen為長度   
  2. function getInterceptedStr(sSource, iLen)   
  3. {   
  4.     if(sSource.replace(/[^\x00-\xff]/g,"xx").length <= iLen)   
  5.     {   
  6.         return sSource;   
  7.     }   
  8.     var ELIDED = "";   
  9.        
  10.     var str = "";   
  11.     var l = 0;   
  12.     var schar;   
  13.     for(var i=0; schar=sSource.charAt(i); i++)   
  14.     {   
  15.         str += schar;   
  16.         l += (schar.match(/[^\x00-\xff]/) != null ? 2 : 1);   
  17.         if(l >= iLen - ELIDED.length)   
  18.         {   
  19.             break;   
  20.         }   
  21.     }   
  22.     str += ELIDED;   
  23.        
  24.     return str;   

原文鏈接:http://www.cnblogs.com/myphoebe/archive/2011/12/20/2294171.html

【編輯推薦】

  1. Java開源CMS系統(tǒng) JEECMS v2012版發(fā)布
  2. Java生成樹結(jié)構(gòu)各點之間最短路徑算法
  3. Java 遠程文件對接
  4. Java I/O系統(tǒng)基礎(chǔ)知識
  5. Ubuntu對Java開發(fā)包說再見!
責(zé)任編輯:林師授 來源: myphoebe的博客
相關(guān)推薦

2022-07-18 08:18:11

字符JavaJDK

2009-06-30 14:16:37

截取字符串

2010-11-26 11:34:32

MySQL截取字符串函

2009-09-01 17:50:23

C#截取字符串

2009-09-01 17:58:55

C#截取字符串

2009-09-01 17:41:53

C#截取字符串函數(shù)

2021-03-08 08:23:24

Java字符串截取

2022-03-16 22:21:53

substringsubstrslice

2010-09-13 15:06:40

sql server字

2010-04-27 12:26:21

Unix字符串

2023-10-08 08:37:28

SQL字符串數(shù)據(jù)

2009-11-18 18:02:19

PHP字符串截取

2021-01-09 23:11:33

SQL數(shù)據(jù)庫字母

2010-07-13 09:20:38

SQL Server

2009-06-23 14:13:00

Java字符串

2009-11-25 13:31:34

PHP常用語法

2009-11-26 16:43:11

PHP截取中文字符串

2024-04-01 08:41:39

字符串.NET

2010-09-09 11:48:00

SQL函數(shù)字符串

2013-06-24 15:16:29

Java字符串拼接
點贊
收藏

51CTO技術(shù)棧公眾號