asp截取字符串长度:长字符串按指定长度截取



在web开发中会遇到这样个问题想让某个内容全部保持在定长度范围内未超出行全部显示超长行只允许显示长度结尾用省略号代替

粗想实现这个功能很容易直接取长度(用length思路方法)如果超出就用sub思路方法截取然后再在结尾处加上省略号但实际上这样做是不行至少说是某种程度上得不到我们想要结果个英文字母和个汉字用lenth思路方法得到值都是1这不错但是在显示时个汉字占两个字母位置这样即使我们截取了指定长度但实际显示起来是参差不齐下面是我对这个问题给出解决方案

/**
* @(#)StringUtil.java
*
*
* @author liangh
* @version 1.00 2008/11/24
*/


public StringUtil{

public StringUtil {
}

public void (String args){
String str="12345 英afa 5左大有枝节碟sd.sdfas 2008-11-22";

.out.prln(StringUtil.omitString(str,30));
str="12345 英afa 5左大有枝节s碟sd.sdfas 2008-11-22";
.out.prln(StringUtil.omitString(str,30));

str="12345 英afa 5左大有枝节a";
.out.prln(StringUtil.omitString(str,30));

str="12345 英afa 5左大有枝节基";
.out.prln(StringUtil.omitString(str,30));
}

/*
* 计算字节长度(字母数字计1汉字及标点计2)
*
*/
public Length(String ){
count = 0;
for( i=0;i<.length;i){
(Integer.toHexString(.charAt(i)).length4){
count 2;
}{
count;
}
}
count;
}

/*
* 按指定长度省略串部分
* @para String
* @para length 保留串长度
* @ 省略后
*/
public String omitString(String , length){
StringBuffer sb = StringBuffer;
(Length()>length){
count = 0;
for( i=0;i<.length;i){
char temp = .charAt(i);
(Integer.toHexString(temp).length4){
count 2;
}{
count;
}
(count<length-3){
sb.append(temp);
}
(countlength-3){
sb.append(temp);
;
}
(count>length-3){
sb.append(" ");
;
}
}
sb.append("...");
}{
sb.append();
}
sb.toString;
}
}


执行结果是:

12345 英afa 5左大有枝节...
12345 英afa 5左大有枝节s ...
12345 英afa 5左大有枝节a
12345 英afa 5左大有枝节基
Tags:  js截取字符串 java截取字符串 截取字符串 asp截取字符串长度

延伸阅读

最新评论

发表评论