Java精确截取字符串,取得字符串前面指定长度字符函数
用java取得字符串的前面部分内容的函数contentStr = contenttemp.substring(0, 150);其中要保证最大长度不能超过字符串的长度。下面是我的实现部分代码,以及网上搜索的相关代码:
/* * content内容过长可能会导致xml文件过大,加载太慢。 * 但从seo的角度考虑全部输出有利于搜索引擎,但一般情况下内容也不会太多 * 为防止空格换行css无法控制撑大页面,用正则表达式替换掉空格,所以截取前面100个字符,页面显示的内容多少用css控制 */ //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; }
参考网址:
http://developer.51cto.com/art/201112/308444.htm
http://www.cnblogs.com/myphoebe/archive/2011/12/20/2294171.html
相关推荐
这个问题在文档标题“Java精确截取字符串.doc”中提到,描述也指出了解决字符串过长并需要添加省略号的需求。 以下是一种常见的解决方法,通过判断字符串中的每个字节来确定是否为中文字符,并据此进行截取: ```...
总的来说,Java中精确截取字符串涉及到字符编码、字节长度计算等多个方面。对于不同的场景,需要选择合适的方法,确保截取后的字符串既能满足长度要求,又能正确显示其中的文本内容。在实际开发中,可以根据项目需求...
第二种方法是针对中文字符的精确截取,因为中文字符在Java中通常以两个字节表示。这种方法通过遍历字符串的字节数组并计数双字节字符(即中文字符)来实现: ```java private String str; private int ...
通过这种方式,我们能够克服Impala原生`substr()`函数在处理中文字符串时的局限性,实现更精确且无乱码的字符串截取操作。这种方法不仅适用于中文字符,还可以扩展到其他多字节字符集,如日文或韩文等。同时,这也是...
本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释其实现原理。 #### 核心概念:Unicode与字节 在讨论字符串按字节截取之前,我们首先需要理解几个基础概念。现代计算机系统中,...
根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...
除了`split()`,Java还提供了`substring()`截取子串,`indexOf()`和`lastIndexOf()`查找子串位置,`startsWith()`和`endsWith()`检查字符串开头和结尾,以及`replace()`和`replaceAll()`替换子串等方法。 总之,...
根据提供的文件信息,本文将详细解释如何在前后端开发中实现对字符串进行精确截取,同时考虑到全角和半角字符的区别。这个问题在处理多语言环境下的文本时尤为重要,因为不同语言中的字符宽度可能有所不同,这直接...
使用上述方法,可以更灵活地控制字符串的截取,特别是在需要精确控制显示长度的场景下,如新闻摘要、商品列表等。 此外,考虑到国际化的需求,开发者还应该了解并掌握如何在不同语言环境下正确处理字符串,包括但不...
本文介绍了几种不同的Java字符串截取方法,并对其进行了详细的分析。通过这些方法,我们可以在不同操作系统下有效地处理中英文混合的字符串。需要注意的是,在实际应用中,还需要结合具体需求对这些方法进行适当的...
- `String`类提供了丰富的操作方法,如`concat()`用于连接字符串,`substring()`截取子串,`replace()`替换指定字符或子串,`trim()`去除两端空格,`toLowerCase()`和`toUpperCase()`转换大小写等。 - 正则表达式...
- 当需要截取字符串的一部分时使用。 ##### 6. `substring(String str, int beginIndex, int endIndex)` **功能:** 获取指定起始和结束位置之间的子字符串。 **参数:** - `str` - 原始字符串。 - `beginIndex` - ...
1. **手动拼接法**:最基础的方法是通过字符串的截取、判断和拼接来实现。首先,获取小数点的位置,然后分别处理小数点前后的部分。如果不足指定位数,就在前面补0。这种方法简单但不够灵活。 2. **使用`String....
Java.util.Date与java.sql.Date的互转及字符串转换为日期时间格式 java.util.Date和java.sql.Date是Java中两个常用的日期时间类,分别属于不同的包。java.util.Date是Java标准库中的日期时间类,而java.sql.Date是...
此外,这段代码还展示了如何使用Java的`substring()`方法来截取字符串的一部分。`substring(int beginIndex, int endIndex)`方法返回一个新的字符串,它是原始字符串从`beginIndex`(包含)到`endIndex`(不包含)的...
Java中的`String`类提供了丰富的API来处理字符串,如`indexOf()`用于查找子串,`replace()`用于替换特定字符或子串,以及`substring()`用于截取字符串的一部分。在处理脏字时,这些方法是基础工具,可以用来检测和...
在J2ME(Java Micro Edition)开发中,数值运算、字符串处理和时间管理是至关重要的基础知识,对于构建高效且用户友好的移动应用来说必不可少。以下将详细解释这些关键概念。 一、数值运算 在J2ME中,数值运算涵盖...
`String`类提供了丰富的API,如`length()`获取字符串长度,`charAt(int index)`访问指定位置的字符,`indexOf(String str)`查找子串首次出现的位置,以及`substring(int beginIndex, int endIndex)`截取子串等。...
- 使用substring()方法截取字符串的一部分。 - **5.10 替换** - 使用replace()方法替换字符串中的子字符串。 - **5.11 字符串转化为相应的数值** - 使用Integer.parseInt()、Double.parseDouble()等方法将字符...
在这个场景下,`meteoinfo`可能被用来进一步分析或整合`shp`文件中的地理信息与气象数据,但这需要具体项目的上下文才能给出更精确的解释。 在实际应用中,根据`meteoinfo`库的文档和API,我们可以将其与`geotools`...