您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java中怎么精確截取字符串,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Java精確截取字符串,取得字符串前面指定長度字符函數
用java取得字符串的前面部分內容的函數contentStr = contenttemp.substring(0, 150);其中要保證***長度不能超過字符串的長度。下面是我的實現部分代碼,以及網上搜索的相關代碼:
/* * content內容過長可能會導致xml文件過大,加載太慢。 * 但從seo的角度考慮全部輸出有利于搜索引擎,但一般情況下內容也不會太多 * 為防止空格換行css無法控制撐大頁面,用正則表達式替換掉空格,所以截取前面100個字符,頁面顯示的內容多少用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);
開發中經常遇到,字符串過長,無法完全顯示的問題
這時候就需要截取我們所需要的長度,后面顯示省略號或其他字符。
由于中文字符占兩個字節,而英文字符占用一個字節,所以,單純地判斷字符數,效果往往不盡如人意
下面的方法通過判斷字符的類型來進行截取,效果還算可以:)
如果大家有其他的解決方法歡迎貼出來,共同學習:)
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; }
看完上述內容,你們對Java中怎么精確截取字符串有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。