网络编程
位置:首页>> 网络编程>> Asp编程>> asp测字符串长度及截取定长字符串汉字的处理

asp测字符串长度及截取定长字符串汉字的处理

 来源:asp之家 发布时间:2007-10-12 13:14:00 

标签:字符串,长度,检测

asp编程中我们经常要处理字符串,比如一个新闻列表,在我们编写asp程序的时候就要考虑到新闻标题的长度不确定性,因为有的文章标题可能很长,可能20或30个字符;而有的标题可能又很短。还有的新闻标题是英文字母或数字,有的都是汉字,或者英文字母和汉字混合。可问题是英文字母或数字的长度和汉字的长度不一致,一个汉字相当于2个字母的长度。这样如果我们对标题不加限制的话,很可能影响到网页的布局,这样页面美观性就差了,当然如果美工考虑周到的话使用CSS可以很方便的处理这个问题。

现在我们讲的是asp程序上如何处理这个问题,我们知道asp中的left函数可以截取一个字符串的左边算起的第几个字符,如一个字符串是:asp之家,请看下面的代码:


str="asp之家"
str=left(str,5)
response.write str


如果运行上面的asp代码则屏幕上显示的是:中国asp

这里left后面的数字为5就截取了5个字符,一个汉字算一个字符。当某字符串都是字母时很显然截取的长度与都是汉字截取的长度差很多。为了解决这个问题,我们就需要来处理汉字,当遇到的字符是汉字的时候,就算两个长度单位。这样就很好的解决了显示长度不同的问题了.

1.测字符串长度, 汉字算两个长度单位

'代码作者不详
Function CheckStringLength(txt)
txt=trim(txt)
x = len(txt)
y = 0
for ii = 1 to x
if asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then ’如果是汉字
y = y + 2
else
y = y + 1
end if
next
CheckStringLength = y
End Function

运行下面的代码:


response.write CheckStringLength("asp之家")


屏幕将显示:11

2.截取指定长度的字符串(包括汉字)

'代码作者不详
function InterceptString(txt,length)
txt=trim(txt)
x = len(txt)
y = 0
if x >= 1 then
for ii = 1 to x
if asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then ’如果是汉字
y = y + 2
else
y = y + 1
end if
if y >= length then 
txt = left(trim(txt),ii) ’字符串限长
exit for 
end if
next
InterceptString = txt
else
InterceptString = ""
end if
End Function 


运行下面的代码:


response.write InterceptString("asp之家",5)


屏幕将显示:中国a

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com