VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 2121|回复: 4

[原创] 刚写了一个判断是否是有意义字符串的函数,分享一下

[复制链接]
发表于 2015-3-18 17:21:14 | 显示全部楼层 |阅读模式
所谓有意义字符串,是指至少包含一个空格、回车、分页……(可以自定义)以外的字符。

原版:
  1. Private Function IsEmptyStr(ByVal s As String) As Boolean
  2.   s = Replace(s, vbCr, "")
  3.   s = Replace(s, Chr(1), "")
  4.   s = Replace(s, Chr(12), "")
  5.   s = Replace(s, Chr(21), "")
  6.   s = Replace(s, " ", "")
  7.   IsEmptyStr = s = ""
  8. End Function
复制代码
优点:代码容易想到和编写。
缺点:效率低,修改时麻烦。

改进版:
  1. Private Function IsEmptyStr(ByVal s As String) As Boolean
  2.   Dim i As Long
  3.   Dim j As Byte
  4.   Dim u As Byte
  5.   Dim Ch As String * 1
  6.   Dim bFound As Boolean
  7.   Dim vInvalidChar As Variant
  8.   
  9.   vInvalidChar = Array(1, 7, 12, 13, 21, 32)
  10.   u = UBound(vInvalidChar)
  11.   IsEmptyStr = True
  12.   
  13.   For i = 1 To Len(s)
  14.     bFound = False
  15.     Ch = Mid$(s, i, 1)
  16.     For j = 0 To u
  17.       If Asc(Ch) = vInvalidChar(j) Then
  18.         bFound = True
  19.         Exit For
  20.       End If
  21.     Next j
  22.     If Not bFound Then
  23.       IsEmptyStr = False
  24.       Exit For
  25.     End If
  26.   Next i
  27. End Function
复制代码
玩了那么多年的编程,对ASCII的不可见字符(32以下的)只了解0(空字符)、8(退格)、10(换行)、13(回车),直到刚才研究了Word VBA,才发现原来其他的控制字符就是用于word这类的富文本格式,例如1(标题开始)、12(换页)。

点评

http://www.diaifu.com/ 总裁小说网  发表于 2015-3-23 23:42
没打之前退格啊:)))  发表于 2015-3-19 11:01
打字机还有8(退格键)的?打错了不是只能浪费了吗?  发表于 2015-3-19 08:10
32以下的字符最早应该是用于电传机之类的设备控制用的,8-10-13是最典型的电传打字机的产物  发表于 2015-3-18 23:06
应该使用varptr使用指针操作  发表于 2015-3-18 23:04
发表于 2015-3-18 17:51:55 | 显示全部楼层
下面的速度也不怎样 最好用strconv(xxx,vbfromunicode)转化成byte 可省去很多不必要的字符串操作
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-18 20:05:57 | 显示全部楼层
startbin321 发表于 2015-3-18 17:51
下面的速度也不怎样 最好用strconv(xxx,vbfromunicode)转化成byte 可省去很多不必要的字符串操作

转换也需要时间啊,不过最影响效率的就是 Ch = Mid$(s, i, 1) 这句了
回复 支持 反对

使用道具 举报

发表于 2015-3-19 14:30:38 | 显示全部楼层
为什么不直接从strptr直接读内存呢?
回复 支持 反对

使用道具 举报

发表于 2015-5-19 13:44:33 | 显示全部楼层
这个有什么用处吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-5 11:54

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表