用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;
}
本文出自seven的测试人生公众号最新内容请见作者的github页:http://qaseven.github.io/