设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 805|回复: 2
打印 上一主题 下一主题

[Access本身] GString 类

[复制链接]
跳转到指定楼层
1#
发表于 2003-8-5 01:22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GString 类
用过 C++ 的人想必都有这个感觉, VB 的 String 功能太弱了.

原因很简单,因为 C++ 的 string 是一个类.
这里,我也依照C++的做了一个类 GString.

属性列表:
value    当前字符串值.(缺省属性)
Version    对象 GString 的版本.
Char(Index)   Char 是一个字符数组, 属性 Char(Index) 返回数组中下标为 Index 的字符
CharB(Index)   同 Char ,只不过 CharB 返回的是一个字节.
Left(Length)   字符串中左边 Length 个字符.
LeftB(Length)   以字节为计量单位的 Left
Right(Length)   ...
RightB(Length)   ...
Length    当前字符串的长度
LengthB    计量单位为字节
SubStr([ByVal Start As Long = 1], [ByVal length As Long]) As String
    返回当前字符串的一个子串,该子串从 Start 开始,长度为 Length.
    如果省略 Start 则,从第一个字符开始,如果省略 Length,则 一直延伸到字符串末尾.
SubStrB([ByVal Start As Long = 1], [ByVal length As Long]) As String
    以字节为计量单位的 SubStr
Unicode    当前字符串的 Unicode 码形式.


方法列表:
Append(Source As String, [ByVal Index As Long], [ByVal length As Long]) As String
    将 Source 的 Length 个字符添加到 Index 位置之前
    如果省略 Index ,则添加到字符串末尾,如果省略 Length,则
    将 Source 的全部添加到 Index 位置之前.
Comp([CompStr As String], [Compare As VbCompareMethod]) As Long
    将当前字符串与 CompStr 比较,其中, Compare 只能是以下值之一
    vbUseCompareOption -1 使用Option Compare语句设置执行一个比较。
    vbBinaryCompare 0 执行一个二进制比较。 (默认值)
    vbTextCompare 1 执行一个按照原文的比较。
    返回值说明:
    小于 CompStr -1
    等于 CompStr 0
    大于 CompStr 1
Delete([ByVal Start As Long = 1], [ByVal length As Long]) As String
    删除从 Start 开始的 Length 个字符,返回删除后的字符串.
    如果省略 Length ,则删除将一直延伸到字符串末尾.
FindFirst(Find As String, [ByVal Start As Long = 1], [ByVal Compare As VbCompareMethod]) As Long
    从 Start 处开始查找 字符串 Find 的第一次出现.
    参数 Compare 的说明见 Comp 方法.
    如果省略 Start ,则默认为从每一个字符处开始查找.
    返回找到的位置,如未找到,则返回 0.
FindFirstB(Find As String, [ByVal Start As Long = 1], [ByVal Compare As VbCompareMethod]) As Long
    FindFirst 的字节版本.
FindLast(Find As String, [ByVal Start As Long], [ByVal Compare As VbCompareMethod]) As Long
    同 FindFirst ,只不过, FindLast 是从 Start 开始反向查找,并且
    当 Start 未指定的时候,默认为从字符串的最后一个位置开始查找.
FindNext() As Long  以上一次 FindFirst , FindFirstB 或 FindLast的条件,继续查找.
    返回找到的位置,如未找到,则返回 0
LCase() As String  将当前字符串中的字母转换为小写,返回转换后的字符串.
Replace([Find As String], [Aim As String], [ByVal Start As Long = 1], [ByVal Count As Long = -1], [ByVal Compare As VbCompareMethod]) As String
    将当前字符串中的从 Start 开始的所有 Find 替换为 Aim,替换的总次数由 Count 指定,如未指定 Count ,则默认为全部替换.
    Compare 的说明请参看 Comp 方法.
    如果未指定 Start 则默认为从第一个字符处开始.
UCase() As String  将当前字符串中的字母转换为大写,返回转换后的字符串.

VB情报局相关网页:
http://www.cndevx.com/club/dispbbs.asp?boardID=30&ID=27543

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2003-8-5 01:23:00 | 只看该作者
如果引用 Gsys_Public.Dll 就可以像下面一样使用 字符串了.

同时,该 Dll 还提供了以下函数:
SetTimeByServer 与服务器同步时间.
GDate() 取得SQL服务器的当前日期
GNow() 取得SQL服务器的当前时间.
Max(NumA,NumB) 返回两个数字中的较小值.
Min(NumA,NumB) 返回两个数字中的较大值.
NzStr(),NzNumberic(),NzDate(),NzBool() Access 中的 Nz 函数的 VB 版本.

这些函数不必建立相应的对象,可以像VB的内部函数一样使用.

    Dim strTempA As New GString
    Dim strTempB As New GString
    Dim strTempC As New GString
    Dim strTempD As New GString
    Dim strTempE As New GString
   
    strTempA = "This"
    strTempB = "Is"
    strTempC = "A"
    strTempD = "Sample"
   
    strTempE = strTempA & " " & strTempB + strTempC             'This Is A
    strTempE = strTempE & strTempD                              'This IsASample
    strTempE.Append " ", 10                                     'This IsA Sample
    strTempE.Replace "IsA", "Is A"                              'This Is A Sample
    strTempE.UCase                                              'THIS IS A SAMPLE
    strTempE.Append "."                                         'THIS IS A SAMPLE.
   
    Debug.Print strTempE
   
    Debug.Print strTempE.Char(0)                                'T
    Debug.Print strTempE.Char(3)                                'S
   
    '查找 "Th"
    Debug.Print strTempE.FindFirst(strTempA.Left(2))                       '返回0 未找到因为默认区分大小写
    '查找 字符 "S",当然,也可以查找一个字符串,比如 "This"
    Debug.Print strTempE.FindFirst(strTempA.SubStr(4, 1), , vbTextCompare)     '返回4 不区分大写小,返回找到的位置.
   
    Debug.Print strTempE.FindNext                                               '返回4 重复上一次查找
    Debug.Print strTempE.FindNext                                               '返回7 字符 S 的第二次出现位置.
    Debug.Print strTempE.IsNull                             'False 因为当前字符串不为空.
    Debug.Print strTempE.Length                             '当前字符串的长度
   
    strTempE = strTempA.UCase & " " & strTempB.LCase & " " & strTempC.Append(" ") & strTempD.Replace(, "Sample(s)")
    '上式返回 "This is A Sample(s)"
3#
发表于 2003-8-5 05:01:00 | 只看该作者
vb通过其它字符串函数也可以达到相同的要求,何必画蛇添足呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-20 21:32 , Processed in 0.084105 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表