·您的位置: 首页 » 资源教程 » 编程开发 » ASP » 截取一定长度字符串

截取一定长度字符串

类别: ASP教程  评论数:0 总得分:0
vbs和js都提供了截取一定长度的字符串的函数,但有一个问题是这些函数都将中文字符视为1个字节,而不是正常的2个字节,如果这些输入的数据要提交到数据库中的话,很可能这些数据的真正长度回答与数据库中该字段所允许的最大长度,于是就出错了。
\'--------------------*****START*****--------------------

FUNCTION strLeft(str,num)

DIM p_str,p_num
p_str = ""
p_num = 0 \'定义变量,标记中文为2字节时的实际字符数

IF TRIM(str)<>"" THEN

FOR i = 1 TO num

IF asc(mid(str,i,1))>255 OR ASC(mid(str,i,1))<0 THEN \'判断下一个欲取的字符所占字节数
p_num = p_num + 2
Else
p_num = p_num + 1
End IF

IF p_num > num THEN EXIT FOR

NEXT

p_str = Left(str,i-1) \'把i-1替换为i,则产生与“说明”中相反的情况。

END IF

strLeft=p_str

END FUNCTION

\'--------------------******END******--------------------
可是在实际使用中发现程序有些问题:如果提交的字符串字数少于所允许的最大字数则程序汇报错,原因是 FOR 循环处的循环次数大于字符串的实际长度,导致下一句中mid函数的参数 i 大于字符串的长度,出现错误。
我针对这个程序作了如下改进:
function strLeft(str,num)
dim p_str,p_num
p_str = ""
p_num = 0

if trim(str) <> "" then
p_len = len(str)
for i = 1 to p_len
if asc(mid(str,i,1)) > 255 or asc(mid(str,i,1)) < 0 then
p_num = p_num + 2
else
p_num = p_num + 1
end if

if p_num > num then
p_str = Left(str,i-1)
exit for
else
p_str = str
end if
next
end if

strLeft=p_str
end function
这样就不会出现那个问题了。
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1