[会员中心]  [发布文章][发布软件]  [中文繁體]
 文章·资料  电脑软件  手机软件  网站源码
    本 站 搜 索
[选项]
   推 荐 文 章        More...
华硕易电脑(ASUS Eee PC 10..
先来段开场白:为了外出携带方便,..
Acronis True Image 使用..
  一款可以在Windows下使用全..
Norton Ghost 使用详解
一、分区备份   使用Ghost进..
    文 章 阅 读 排 行
Microsoft SQL Server 2000..
  对于第一次安装 Microsoft SQ..
ASP:Dimac W3 JMail 发送..
【发送邮件测试代码下载】压..
ASP:Persits ASPMail 发送..
【发送邮件测试代码下载】压..
VMware Workstation:安装..
编写这份虚拟机安装的图文教程,..
华硕易电脑(ASUS Eee PC 10..
先来段开场白:为了外出携带方便,..
ASP:Microsoft CDO 发送邮..
【发送邮件测试代码下载】压..
 文 章 信 息
ASP 中英文混排字符串的截取函数
评论()〗〖留言〗〖收藏
〖文章分类:电脑·手机·网络 / 网站设计·开发·优化〗〖阅读选项
  以前遇到过类似的问题,但一直没有仔细剖析,昨天刚巧有朋友问到,就好好做了一下,先从网上找了相关函数,如下:

'===============================================================
 'Strsub
 '函数功能:获取字符串长度(汉字长度为2).
 '参数意义:str ---- 字符串
 '===============================================================
 Function strlen(str)
  Dim p_len,xx
  p_len=0
  strlen=0
  If Trim(str)<>"" Then
   p_len=len(trim(str))
  
   For xx=1 To p_len
    If asc(mid(str,xx,1))<0 Then
     strlen=int(strlen) + 2
    Else
     strlen=int(strlen) + 1
    End If
   Next
  End If
 End Function
 '===============================================================
 'Strsub
 '函数功能:字符串截取.
 '参数意义:str ---- 要截取的字符串. lennum---截取的字符数. s---结尾字符
 '===============================================================
 Function Strsub(str,lennum,s)
  If Not IsNull(str) Then
   Dim p_num,x
   Dim i
   If strlen(str)<=lennum Then
    Strsub=str
   Else
    p_num=0
    x=0
    Do While Not p_num > lennum-2
     x=x+1
     If Asc(Mid(str,x,1))<0 Then
      p_num=Int(p_num) + 2
     Else
      p_num=Int(p_num) + 1
     End If
     Strsub=Left(Trim(str),x)&s
    Loop
   End If
  Else
   Strsub="Null"
  End If
 End Function
测试过程中发现如下问题:
1有截取的时候函数调用使用方法不清晰 ,指定长度同时指定后面显示的省略符号,使得长度控制不准确.
2在部分中英混排情况下截取不准,不能得到可显示部分的最后一个英文字符.
昨天研究过这些后有事情先闪,回家有心情看孩子的时候居然手写了两个函数,这张纸应该照下来,不过今天没带220,下午拍完补上,好久没有这么认真的想事情了.写的函数如下:
'===============================================================
'自定义函数名:mylen
'函数功能:获取字符串长度(汉字长度为2).
'参数意义:str ---- 字符串
'===============================================================
function mylen(str)
 mylen=0
 for x=1 to len(str)
   mylen=mylen+1
   if asc(mid(str,x,1))<0 then mylen=mylen+1
 next
end function
'===============================================================
'自定义函数名:myleftstr
'函数功能:字符串截取.(处理汉字与英文数字混排)
'参数意义:str ---- 要截取的字符串. mylenth---截取的字符数.
'提示:这里自动将超长的后三个字符处理为...
'===============================================================
function myleftstr(str,mylength)
 myleftstr=str
 if mylen(str)>mylength then
  mylength=mylength-3
  for x=int(mylength/2) to mylength+1
   if mylen(left(str,x))>mylength then getlength=x-1:exit for
  next
  myleftstr=left(str,getlength)&"..."
 end if
end function
做了几组数据测试进行比较,
设置为可显示10个字符的限制,对于函数使用Strsub(str,7,"...")方式调用,也许是没有细看函数的原因,可能还会有更细致的设置方法达到更好的效果.
测试结果:

测试结果总结:
对于全中文的字符串,如果超长可显示部分是奇数个的话,后面的半个无法显示这是肯定的,显示了也是不正常,经过处理,允许显示范围内的最后一个英文字符可以显示,还算正常。

文章作者:未知  更新日期:2009-07-08
〖文章浏览:〗〖打印文章〗〖发送文章
·ASP 与 ASP.NET 的区别2006-11-24
·用ASP 按修改时间读取文件夹中文件并排序2008-03-07
·ASP 中 SQL 防注入程序代码2009-09-10
·ASP 网页编码 GB2312 转换为 UTF-82020-06-01
·Ajiu ASPWebServer V2.2(ASP Web 服务器)2011-11-17
·秋天 ASP Encrypt 加密 V1.0(ASP 代码加密)2021-10-22
·Halcyon Instant ASP V2.1(iASP,Linux 系统运行 ASP 网站)2019-08-29
·ASP Decoder(ASP 代码加密/解密) V1.012005-06-29
·ASP 参考手册2010-11-10
·闪电ASP V2.02005-10-09
阅读说明
·本站大部分文章转载于网络,如有侵权请留言告知,本站即做删除处理。
·本站法律法规类文章转载自[中国政府网(www.org.cn)],相关法律法规如有修订,请浏览[中国政府网]网站。
·本站转载的文章,不为其有效性,实效性,安全性,可用性等做保证。
·如果有什么问题,或者意见建议,请联系[网站管理员]。
  当百网
  本站使用【啊估文章软件站】网站系统    网站管理员留言簿