字符串操作

2.2 转换字符串
2.2.1 StrConv函数
使用StrConv函数来按指定类型转换字符串。其语法为:
    StrConv(string,conversion,LCID)
其中,参数string为要转换的字符串,参数conversion为指定转换的类型,参数LCID为可选参数。
如果将参数conversion设置为vbUpperCase或1,则将字符串转换成大写;设置为vbLowerCase或2,则将字符串转换成小写;设置为vbProperCase或3,则将字符串中每个字的开头字母转换成大写;设置为vbUnicode或64,则根据系统的缺省码页将字符串转换成Unicode;设置为vbFromUnicode或128,则将字符串由Unicode转换成系统的缺省码页。
在将ANSI格式的Byte数组转换成字符串时,应使用StrConv函数;转换Unicode格式的数组时,使用赋值语句。下面的例子使用StrConv函数将Unicode字符串转换成ANSI字符串:
Sub testConverseString()
  Dim i As Long
  Dim x() As Byte
  x = StrConv("ABCDEFG", vbFromUnicode)    ' 转换字符串。
  For i = 0 To UBound(x)
    Debug.Print x(i)
  Next
End Sub
下面的例子将句子中每个词语的首字母转换为大写:
Sub testConverseString2()
  Debug.Print StrConv("my book is this book.", vbProperCase)
End Sub
程序运行后,在VBE窗口中的立即窗口中将会看到上述结果。
下面的示例演示了如何把一个字符串转换为字节数组,以便使用在API函数调用中:
Sub Test()
  Dim byArray() As Byte
  Dim sString As String
  sString = "Some stuff"
  byArray = StrConv(sString, vbFromUnicode)
End Sub
StrConv函数将下面的字符看成是字的分隔符:
Null:Chr$(0)
水平制表符:Chr$(9)
换行符:Chr$(10)
垂直制表符:Chr$(11)
换页符:Chr$(12)
回车符:Chr$(13)
空格:Chr$(32)
[编程方法和技巧] 在使用API时该函数很重要,很多程序调用都要求传递给它们Unicode字符,或者赋给返回变量Unicode字符。
2.2.2 Str函数
将数值转换成字符串,即返回代表一个数值的字符串。其语法为:
Str(number)
当一个数字转成字符串时,总会在前面保留一个空位来表示正负,即字符串的第一位一定是空格或正负号。如果参数number为正,返回的字符串前面包含一空格。Str函数将句点(.)作为有效的小数点。示例如下:
  MyString = Str(459)    ' 返回 " 459"
  MyString = Str(-459.65)    ' 返回 "-459.65"
  MyString = Str(459.001)    ' 返回 " 459.001"
[编程方法和技巧] 使用LTrim函数可删除Str函数在返回的字符串开头添加的前导空格。此外,CStr函数和Format函数已经取代了Str函数,CStr函数不用为正数的符号而添加前导空格,Format函数能够用来识别小数点。
2.2.3 CStr函数
CStr将数值表达式转换成String数据类型。示例如下:
MyDouble = 437.324    ' MyDouble 为 Double 类型
MyString = CStr(MyDouble)    ' MyString 的内容为"437.324"
[编程方法和技巧] 传递给CStr的未初始化的数字数据类型返回“0”,传递给CStr的未初始化的日期变量返回“0:00:00”。


2.3 创建字符串
2.3.1 Space函数
该函数返回指定数的空格的字符串。语法为:
Space(number)
其中,参数number必须,为字符串中指定的空格数。
如下例所示:
Sub CreateString1()
  Dim MyString
  ' 返回 10 个空格的字符串。
  MyString = Space(10)
  ' 将 10 个空格插入两个字符串中间。
  MyString = "Hello" & Space(10) & "World"
End Sub
该函数可用于在调用外部DLL时建立字符串缓冲区,特别是在调用Window API时。此外,使用该函数还可以使字符串在特定长度的缓冲区左对齐或右对齐。
注意,如果参数number是负数,则会产生运行时错误5:“无效的过程调用或参数”。
[编程方法和技巧] 可以使用Space函数添加和清除存储在定长字符串中的数据,例如,下面的代码用空格填充一个定长字符串:
Dim strFixed As String * 32
……
strFixed = Space(Len(strFixed))
2.3.2 String函数
该函数返回重复的字符或字符串。其语法为:
String(number,character)
其中,参数number必须,指定所返回的字符串的长度;参数character必须,指定字符的字符代码或字符串表达式。
例如,下面使用String函数生成指定长度且只含单一字符的字符串。
Sub CreateString2()
  Dim MyString
  MyString = String(5, "*")    ' 返回 "*****"
  MyString = String(5, 42)    ' 返回 "*****"
  MyString = String(10, "ABC")    ' 返回 "AAAAAAAAAA"
End Sub
如果参数number包含Null,则返回Null;如果参数character包含Null,则返回Null;参数character可以指定为字符串或者是ANSI字符代码,如:
strString1=String(128,”=”) ‘用”=”填充
strString2=String(128,0) ‘用Chr$(0)填充
[编程方法和技巧]
(1) String函数在用于创建较长的“_”,“-”,或者“=”构成的水平线以便给报表分段时十分有用。
(2) 当调用API函数向缓冲区写入字符串值时,首先要用String函数创建一个长度合适的字符串变量,并且用诸如Chr$(0)之类的单个字符来填充。


2.8 删除空格
LTrim函数删除字符串前面的空格;
RTrim函数删除字符串后面的空格;
Trim函数删除两头的空格。
示例如下:
MyString = "  <-Trim->  "    ' 设置字符串初值
TrimString = LTrim(MyString)    ' TrimString = "<-Trim->  "
TrimString = RTrim(MyString)    ' TrimString = "  <-Trim->"
TrimString = LTrim(RTrim(MyString))    ' TrimString = "<-Trim->"
' 只使用 Trim 函数也同样将两头空格去除
TrimString = Trim(MyString)    ' TrimString = "<-Trim->"


2.9 返回字符代码
Asc函数返回指定字符串表达式中第一个字符的字符代码。示例如下:
MyNumber = Asc("A")    ' 返回 65
MyNumber = Asc("a")    ' 返回 97
MyNumber = Asc("Apple")    ' 返回 65
[编程方法和技巧]
(1) 在数据验证中用Asc来决定一些条件,如第一个字符是大写还是小写、是字母还是数字。
Private Sub CommandButton1_Click()
  Dim sTest As String
  Dim iChar As Integer
  sTest = TextBox1.Text
  If Len(sTest) > 0 Then
    iChar = Asc(sTest)
    If iChar >= 65 And iChar <= 90 Then
      MsgBox "第一个字符是大写"
    ElseIf iChar >= 97 And iChar <= 122 Then
      MsgBox "第一个字符是小写"
    Else
      MsgBox "第一个字符不是字母"
    End If
  Else
    MsgBox "请在文本框中输入"
  End If
End Sub
(2) 用Asc函数和Chr函数来创建基本加密的方法。
Private Sub CommandButton2_Click()
  Dim MyName As String, MyEncryptedString As String
  Dim MyDecryptedString As String
  Dim i As Integer
  MyName = "fanjy"
  For i = 1 To Len(MyName)
    MyEncryptedString = MyEncryptedString & Chr(Asc(Mid(MyName, i, 1)) + 25)
  Next i
  MsgBox "您好!我的名字是" & MyEncryptedString
  For i = 1 To Len(MyName)
    MyDecryptedString = MyDecryptedString & Chr(Asc(Mid(MyEncryptedString, i, 1)) - 25)
  Next i
  MsgBox "您好!我的名字是" & MyDecryptedString
End Sub 


  2.14 替换字符串

Replace函数返回一个被替换了的字符串,该字符串中指定的子字符串已被替换成另一个子字符串,并且替换指定次数。其语法为:
Replace(expression,find,replace[,start[,count[,compare]]])
其中,参数expression必需,表示所要替换的子字符串;参数find必需,表示要搜索到的子字符串;参数replace必需,表示用来替换的子字符串;参数start表示开始搜索的位置,若忽略,则从1开始;参数count表示进行替换的次数,缺省值是-1,表示进行所有可能的替换;参数compare表示判别子字符串时所用的比较方式,与Filter函数的设置值相同。
如果expression的长度为零,Replace返回零长度字符串(“”);如果expression为Null,则返回错误;如果find的长度为零,则返回expression的副本;如果replace的长度为零,则返回删除了所有出现find的字符串的副本;如果start的值大于expression的长度,则返回长度为零的字符串;如果count为0,则返回expression的副本。
Replace函数返回的字符串是从参数start所指定的位置开始到expression结尾已经进行过替换的字符串。
注意:
(1) 如果没有使用参数count,那么当替换较短字符串时就要注意,防止形成一个不相关的字符。

(2) 如果start值大于1,返回的字符串将从start开始,而不是从原有字符串的第一个字符开始。



2.10 返回数值代表的相应字符
Chr函数返回指定字符码所代表的字符,其语法为:
Chr(charcode)
其中参数charcode代表字符码,一般为0~255。例如:
MyChar = Chr(65)   ' 返回 A
MyChar = Chr(97)   ' 返回 a
MyChar = Chr(62)   ' 返回 >
MyChar = Chr(37)   ' 返回 %
[编程方法和技巧]
(1) 使用Chr(34)将引号嵌入字符串,如
Chr(34) & sString & Chr(34)
(2) 下面列出了在调用Chr函数时比较常用的字符代码:
代码  值    描述
0   Null   相当于vbNullChar常数
8   BS   相当于vbBack常数
9   TAB   相当于vbTab常数
10   CR   相当于vbCr和vbCrLf常数
13   LF   相当于vbLf和vbCrLf常数
34   “”   引号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值