java 字符串长度截取_java中截取指定字符串长度函数

用java取得字符串的前面部分内容的函数contentStr = contenttemp.substring(0, 150);其中要保证最大长度不能超过字符串的长度。下面是我的实现部分代码,以及网上搜索的相关代码:

/*

* content内容过长可能会导致xml文件过大,加载太慢。

* 但从正则表达式替换掉空格,所以截取前面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 需要显示的长度(注意:长度是以byte为单位的,一个汉字是2个byte)

* @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;

}

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

亖了个橙北

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值