|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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 这样就不会出现那个问题了。 返回类别: 教程 上一教程: 一个用ASP生成HTML的新方式 下一教程: 用ASP创建数据库 您可以阅读与"截取一定长度字符串"相关的教程: · 截取固定长度字符串显示在页面 · 截取固定长度字符串显示在页面,多余部分显示为省略号(区分汉字和字符) · 生成指定长度的随机字符串 · 测字符串长度函数 · 控制输出字符串的长度,可以区别中英文 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |