Asp中Len()函数和Left()函数的区别补充 |
来源:智睿 浏览:2106 次 发布时间:2017-08-26 16:32:24 |
在Asp实际开发应用中,我们会经常使用到Len函数和Left函数。 其目的就是判断当前输出的字符串长度,如果过长,我们必须截取前面的部分字符,否则就会出现换行或页面变形的情况。 我们看看下面的示例: 某网站在首页有个“今日新闻”,显示最新的5条信息的标题,但它的table或div宽度,每个标题只允许显示最多20个中文(40个英文或数字) 问题出来了: 注意上面的话,显示最多20个中文(40个英文或数字)。 那么我到底是Left(Rs("NewsTitle"),20),还是Left(Rs("NewsTitle"),40)呢(这里假设新闻标题的字段为NewsTitle)? 又或者某条新闻的标题既包含中文,又包含英文、数字,那我应该怎么判断? 很多人都遇过同样的问题,而我们处理的方法是:宁愿多截取,也不愿页面变形(我早期的方法就是这样) 这样,大部人都选择Left(Rs("NewsTitle"),20) 页面不会变形了,但如果每条新闻的标题有很多英文和数字组成,Left就会把它们早早的截取掉,感觉只有了一半。虽然这个样子比换行或页面变形好看,但这也是死马当活马医。 怎么解决这个问题? 从所周知,1个中文等于2个半角状态下的英文或数字…… 对,原理就是这个,我们把1个中文,看成2个英文或数字,这样来做,就可以把问题解决了 请看函数 Function LenStr(StrValue) Dim a,i for i=1 to Len(StrValue) a=Mid(StrValue,i,1) if Asc(a)<0 then LenStr=LenStr+2 else LenStr=LenStr+1 end if next End Function 用法:Response.Write LenStr("函数") 返回的结果是:4 而用原始方法:Response.Write Len("函数") 返回的结果是:2 有点感觉了吧?我们已经正确的判断出来了,那如何截取呢? 函数 Function LeftStr(StrValue,NumValue) Dim nStr,a,i for i=1 to Len(StrValue) a=Mid(StrValue,i,1) if Asc(a)<0 then nStr=nStr+2 else nStr=nStr+1 end if LeftStr=LeftStr&a if nStr>=CInt(NumValue) then Exit Function next End Function 用法与Left一样 如 Response.Write LeftStr("Asp中Left函数的不足",10) 返回结果是:Asp中Left函 Response.Write Left("Asp中Left函数的不足",10) 返回结果是:Asp中Left函数 我们再回到第一个问题: 某网站在首页有个“今日新闻”,显示最新的5条信息的标题,但它的table或div宽度,每个标题只允许显示最多20个中文(40个英文或数字) 现在我们只需要LeftStr(Rs("NewsTitle"),40)就可以了,LeftStr这个函数,会把1个中文自动看成2个英文或数字。 问题现在圆满解决:) |
【刷新页面】【加入收藏】【打印此文】 【关闭窗口】 |
上一篇:智睿企业网站管理系统 V 10.0.5 开源企业网站系统,简繁企业网站 下一篇:智睿多语企业网站管理系统 V 9.7.0 中英企业网站, 开源企业网站系统 |