Strings模块
Strings模块将运行时的文本处理原语组合在一起——测量字符串、查找字符串内部、从旧字符串构建新字符串、拆分和连接字符串数组、以及将非字符串值格式化为文本。大多数成员有两种可调用形式:带$后缀的形式(例如Left$)返回String,不带后缀的形式(例如Left)返回Variant(String)并通过调用传播Null。一些成员还有B变体——AscB、ChrB、InStrB、LeftB、LenB、MidB、RightB——它们在字节位置而非字符位置上操作,用于处理保存在String中的字节缓冲区数据。
长度和字符代码
Len返回字符串中的字符数,或者——当给定非字符串变量时——返回变量占用的字节数。Asc返回字符串第一个字符的字符代码;Chr是其逆操作,从代码点构建单字符字符串。W变体(AscW、ChrW)无论系统代码页如何都在Unicode中工作。
Debug.Print Len("Hello") ' 5
Debug.Print Asc("A") ' 65
Debug.Print Chr(65) ' "A"搜索和比较
StrComp比较两个字符串,返回-1、0或1来报告哪个更大(或相等)。InStr和InStrRev返回一个字符串在另一个字符串中的位置,分别从选定的起始位置向前扫描或向后扫描。这三者都接受可选的compare参数,控制比较是否区分大小写(vbBinaryCompare)、不区分大小写(vbTextCompare)或由周围的Option Compare设置决定(vbUseCompareOption)。注意InStrRev相对于InStr交换了被搜索字符串和搜索字符串参数的顺序。
Debug.Print InStr("Hello, world", "o") ' 5 (first match, forward)
Debug.Print InStrRev("Hello, world", "o") ' 9 (first match, reverse)
Debug.Print StrComp("ABC", "abc", vbTextCompare) ' 0 (equal under text compare)子字符串、填充和修剪
Left、Mid和Right从字符串的开头、中间或末尾提取子字符串。Mid还可以通过Mid =语句作为左值使用,将字符就地写回字符串。Space返回一串空格,String返回一串任意选择的字符——两者都可用于填充固定宽度输出。LTrim、RTrim和Trim分别去除字符串的前导空格、尾部空格或两者的空格。
Dim S As String
S = " Hello, world "
Debug.Print "[" & Trim(S) & "]" ' "[Hello, world]"
Debug.Print Left(Trim(S), 5) ' "Hello"
Debug.Print String(3, "*") & " " & Space(2) & "!" ' "*** !"大小写转换和其他变换
LCase和UCase将字符串转换为小写或大写。StrReverse反转字符顺序。StrConv捆绑了更广泛的转换集——大小写转换、首字母大写、DBCS区域设置的窄/宽和平假名/片假名映射、以及Unicode与ANSI字节数组的往返转换——通过可叠加的标志参数选择。
Debug.Print UCase("Hello") ' "HELLO"
Debug.Print StrReverse("Hello") ' "olleH"
Debug.Print StrConv("hello world", vbProperCase) ' "Hello World"拆分、连接、替换和过滤
Split按分隔符将字符串拆分为从零开始的子字符串数组;Join执行相反的操作,用选定的分隔符将数组重新连接在一起。Replace在一个字符串中将一个子字符串替换为另一个,可选择限制替换次数或从给定偏移量开始。Filter将字符串数组缩减为仅包含——或将include设为False时不包含——选定子字符串的元素。
Dim Parts() As String
Parts = Split("red,green,blue", ",")
Debug.Print Join(Parts, " / ") ' "red / green / blue"
Debug.Print Replace("red,green,blue", ",", "; ") ' "red; green; blue"将值格式化为文本
Format是通用格式化函数:它接受任何表达式——数字、日期或字符串——连同命名或用户定义的格式字符串,并返回渲染后的文本。四个命名格式化函数FormatCurrency、FormatNumber、FormatPercent和FormatDateTime封装了最常见的情况,使用显式参数代替格式字符串,使调用处表达的是意图而非配方。MonthName和WeekdayName根据数字索引返回月份或星期几的本地化名称(或缩写)。
Debug.Print Format(1234.5, "#,##0.00") ' "1,234.50"
Debug.Print FormatCurrency(1234.5) ' "$1,234.50" (US locale)
Debug.Print FormatDateTime(Now, vbLongDate) ' "Saturday, May 9, 2026"
Debug.Print MonthName(1) ' "January"成员
- Asc —— 返回字符串中第一个字符的字符代码
- Chr —— 返回与字符代码相关联的字符
- Filter —— 返回匹配(或不匹配)子字符串的字符串数组子集
- Format —— 根据格式表达式格式化表达式
- FormatCurrency —— 将表达式格式化为货币字符串
- FormatDateTime —— 将表达式格式化为日期/时间字符串
- FormatNumber —— 将表达式格式化为数字字符串
- FormatPercent —— 将表达式格式化为百分比字符串
- InStr —— 返回一个字符串在另一个字符串中的位置
- InStrRev —— 从末尾搜索返回一个字符串在另一个字符串中的位置
- Join —— 使用给定分隔符连接字符串数组
- LCase —— 返回转换为小写的字符串
- Left —— 返回字符串最左侧的子字符串
- Len —— 返回字符串的长度或变量的存储大小
- LTrim —— 去除字符串的前导空格
- Mid —— 返回字符串的子字符串
- MonthName —— 返回指定月份的名称
- Replace —— 替换字符串中的子字符串
- Right —— 返回字符串最右侧的子字符串
- RTrim —— 去除字符串的尾部空格
- Space —— 返回由空格组成的字符串
- Split —— 按分隔符将字符串拆分为字符串数组
- StrComp —— 比较两个字符串
- StrConv —— 将字符串转换为指定格式
- String —— 返回由重复字符组成的字符串
- StrReverse —— 反转字符串的字符顺序
- Trim —— 去除字符串的前导和尾部空格
- UCase —— 返回转换为大写的字符串
- WeekdayName —— 返回指定星期几的名称