注册 登录
编程论坛 ASP技术论坛

关于Left函数的疑问

liu_libra 发布于 2010-05-31 15:12, 1172 次点击
函数:function checklen4(str)
if len(str)>80 then
   response.write left(str,80)&"……"
 else
   response.write str
 end if
end function


正文代码:<tr>
        <td height="50" class="head11"><%=checklen4(rs("content1"))%><a href="/news/news_detail.asp?id=<%=rs("id")%>">[详细]</a></td>
      </tr>

可实际显示效果:
只有本站会员才能查看附件,请 登录


问题:我用left函数截取后应该只限制40个汉字了,可实际为什么显示56个汉字和3个标点符号呢?
12 回复
#2
hams2010-05-31 15:27
有空格吧。
汉字虽然是2个字节的,但在这里每个汉字只算一个字符,如果没有空格并且全是汉字的情况下,全显示80个汉字加上“……”。

我的习惯是改成这样:
if len(str)>80 then
   response.write left(str,76)&"……"
else
   response.write str
end if
#3
liu_libra2010-05-31 16:00
你的意思是把80改为76?
如果是因为空格的原因的话,能不能这样:
function checklen4(str)
  str=trim(str)
 if len(str)>80 then
   response.write left(str,76)&"……"
 else
   response.write str
 end if
end function
#4
hams2010-05-31 16:10
好好查下手册,trim是什么函数,只是去掉开头和结尾,关键是,你了解过你的空格在哪么?我只是提出,可能会有空格引起的错误,你有去查过么?是不是因为有空格?还是别的原因?来这里是学点本事的,不是让别人帮你做完了然后你直接COPY的。
#5
liu_libra2010-05-31 16:32
我也没让你帮我直接把代码写出来算了,说话何必这样子呢,本来我也不是学这个的,都是自学的,认识的人里也没有会的。我也提出了我自己的想法,也没有完全照搬你的东西,说话何必要这样子呢。我也查过trim函数了,而且我也试过了,而且我的目的也就是要去掉开头部分的空格,你没有了解情况,你可以不帮我,但请不要随便给别人下定义!!!
#6
liu_libra2010-05-31 16:34
就是你刚才说的过滤HTML格式,我也百度过了,不会等着你给一个答案的,我只是要一个参考意见或者一个思路而已,何必把话说得这么难听!
#7
liu_libra2010-05-31 16:36
算了,谢谢你的帮助,我自己解决!
#8
liu_libra2010-05-31 16:36
我就不相信我解决不了!!!!!
#9
hams2010-05-31 16:37
我提出来可能是空格的原因,你查了么?没真正找出原因,就去写代码,只会累死人。告诉你的只是方法,不只是写程序的方法,还是解决办法的方法。

如果看不顺眼,当我没说。
#10
liu_libra2010-05-31 16:59
我知道原因了,不是因为空格,而是因为HTML代码,过滤后就好了
#11
hams2010-05-31 17:08
这不就对了么
#12
hams2010-05-31 17:11
最后,建议你在算字符数量时,把全角字符和半角安符分开计算,实际情况是,如果不分开,全部为全角字符时(如全中文),排版比较满意,但如果下次是有部分半角字符(比如说出现些英文公司名称或数字),你的排版可能就比较难看……
#13
liu_libra2010-05-31 17:21
恩,谢谢你的建议!
1