Java中怎么精確截取字符串

今天就跟大家聊聊有關Java中怎么精確截取字符串,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比淮陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式淮陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋淮陽地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

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(0, 100);   //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;   }

看完上述內(nèi)容,你們對Java中怎么精確截取字符串有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

分享文章:Java中怎么精確截取字符串
網(wǎng)址分享:http://muchs.cn/article2/gpjeoc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務網(wǎng)站建設、全網(wǎng)營銷推廣用戶體驗、網(wǎng)站內(nèi)鏈移動網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化