Skip to content

VBMAN.ToolsStr - 字符串工具对象

概述

VBMAN.ToolsStr 提供了丰富的字符串处理功能,包括 GUID 生成、正则提取、编码转换、文本分割等。

方法

GetGUID

生成 GUID 字符串

vb
Public Function GetGUID(Optional isFull As Boolean) As String

参数:

  • isFull - 是否返回完整格式(带大括号),默认 False

返回: GUID 字符串

示例:

vb
' 标准格式
Debug.Print VBMAN.ToolsStr.GetGUID()
' 输出: 550e8400-e29b-41d4-a716-446655440000

' 完整格式
Debug.Print VBMAN.ToolsStr.GetGUID(True)
' 输出: {550e8400-e29b-41d4-a716-446655440000}

ParseNumbers

从字符串中提取数字

vb
Public Function ParseNumbers(inputString As String, Optional DecimalPlaces As Long = -1, Optional Count As Long) As Collection

参数:

  • inputString - 输入字符串
  • DecimalPlaces - 小数位数(-1 表示不处理)
  • Count - 最大提取数量(0 表示不限制)

返回: 包含数字的 Collection

示例:

vb
Dim nums As Collection
Set nums = VBMAN.ToolsStr.ParseNumbers("价格: 123.45元,数量: 10个")

Dim i As Long
For i = 1 To nums.Count
    Debug.Print nums(i)
Next i
' 输出: 123.45, 10

SplitLinesToCollection

将文本分割为行集合

vb
Public Function SplitLinesToCollection(ByVal Text As String) As cCollection

参数:

  • Text - 要分割的文本

返回: cCollection 集合,每行一个元素

示例:

vb
Dim lines As cCollection
Set lines = VBMAN.ToolsStr.SplitLinesToCollection("第一行" & vbCrLf & "第二行" & vbCrLf & "第三行")

Dim i As Long
For i = 1 To lines.Count
    Debug.Print lines(i)
Next i

JoinLinesFromCollection

将行集合合并为字符串

vb
Public Function JoinLinesFromCollection(Coll As cCollection) As String

参数:

  • Coll - cCollection 集合

返回: 合并后的字符串

示例:

vb
Dim coll As New cCollection
coll.Add "Line 1"
coll.Add "Line 2"
coll.Add "Line 3"

Dim text As String
text = VBMAN.ToolsStr.JoinLinesFromCollection(coll)
' 结果: Line 1 & vbCrLf & Line 2 & vbCrLf & Line 3

ToArray

将字符串转换为字符数组

vb
Public Function ToArray(Text As String) As String()

参数:

  • Text - 输入字符串

返回: 字符数组

示例:

vb
Dim chars() As String
chars = VBMAN.ToolsStr.ToArray("Hello")

Dim i As Long
For i = LBound(chars) To UBound(chars)
    Debug.Print chars(i)
Next i
' 输出: H, e, l, l, o

SplitLines

将文本分割为行数组

vb
Public Function SplitLines(ByVal Text As String) As String()

参数:

  • Text - 输入文本

返回: 字符串数组

示例:

vb
Dim lines() As String
lines = VBMAN.ToolsStr.SplitLines("第一行" & vbCrLf & "第二行")

综合示例

示例1: 生成唯一标识

vb
Private Sub GenerateUniqueId()
    ' 生成订单号
    Dim orderId As String
    orderId = "ORD" & Replace(VBMAN.ToolsStr.GetGUID(), "-", "")
    Debug.Print orderId
    ' 输出: ORD550e8400e29b41d4a716446655440000
End Sub

示例2: 提取文本中的数据

vb
Private Sub ExtractData()
    Dim text As String
    text = "产品A: 价格 199.99元,库存 50件,销量 1000件"
    
    Dim numbers As Collection
    Set numbers = VBMAN.ToolsStr.ParseNumbers(text, 2)  ' 保留2位小数
    
    If numbers.Count >= 3 Then
        Debug.Print "价格: " & numbers(1)   ' 199.99
        Debug.Print "库存: " & numbers(2)   ' 50
        Debug.Print "销量: " & numbers(3)   ' 1000
    End If
End Sub

示例3: 处理多行文本

vb
Private Sub ProcessMultiLineText()
    Dim inputText As String
    inputText = "张三,25,北京" & vbCrLf & _
                "李四,30,上海" & vbCrLf & _
                "王五,28,广州"
    
    ' 分割为行
    Dim lines As cCollection
    Set lines = VBMAN.ToolsStr.SplitLinesToCollection(inputText)
    
    ' 处理每一行
    Dim i As Long
    For i = 1 To lines.Count
        Dim parts() As String
        parts = Split(lines(i), ",")
        
        Debug.Print "姓名: " & parts(0) & ", 年龄: " & parts(1) & ", 城市: " & parts(2)
    Next i
End Sub

其他常用方法

根据源码,ToolsStr 还包含以下方法(部分):

方法说明
IsEmptyEx检查字符串是否为空(扩展)
TrimEx增强的 Trim 函数
PercentEncode百分号编码
PercentDecode百分号解码
UnicodeEncodeUnicode 编码
UnicodeDecodeUnicode 解码
HasStr检查是否包含子串
SubStr子串提取
GetRandStr生成随机字符串

最佳实践

  1. GUID 使用: 适合生成唯一标识,但不适合作为有序 ID
  2. 数字提取: 正则表达式提取,注意处理小数和科学计数法
  3. 文本分割: 处理不同换行符格式(\r\n, \n)
  4. 字符编码: 注意 VB6 内部使用 Unicode,但 IO 常使用 ANSI

VB6及其LOGO版权为微软公司所有