Java精确截取字符串,取得字符串前面指定长度字符函数
用java取得字符串的前面部分内容的函数contentStr = contenttemp.substring(0, 150);其中要保证最大长度不能超过字符串的长度 。下面是我的实现部分代码,以及网上搜索的相关代码:
-
-
-
-
-
-
-
-
- String contenttemp = rs.getString(contentName).trim().replaceAll("\\s+","");
-
- if(contenttemp.length()>100){
- contenttemp = contenttemp.substring(0, 100);
-
- }
- rsbody.append(beforCONTENT);
- rsbody.append(contenttemp);
- rsbody.append(endCONTENT);
开发中经常遇到,字符串过长,无法完全显示的问题
这时候就需要截取我们所需要的长度,后面显示省略号或其他字符 。
由于中文字符占两个字节,而英文字符占用一个字节,所以,单纯地判断字符数,效果往往不尽如人意
下面的方法通过判断字符的类型来进行截取,效果还算可以:)
如果大家有其他的解决方法欢迎贴出来,共同学习:)
- private String str;
- private int counterOfDoubleByte;
- private byte b[];
-
-
-
-
- public void setLimitLengthString(String str){
- this.str = str;
- }
-
-
-
-
-
- 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;
- }
-
-
-
- -------------------
-
-
-
-
-
-
-
-
- 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;
- }
-
- =================
-
-
-
-
-
-
-
-
-
-
-
- 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;
- }
得到字符串真实长度和取固定长度的字符串函数
-
- 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://www.cnblogs.com/myphoebe/archive/2011/12/20/2294171.html