字符串(Apache OpenOffice BASIC 运行时库)

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
doc OOo
Book.png

使用字符集

在管理字符串时,Apache OpenOffice Basic 使用 Unicode 字符集。AscChr 函数用于确定属于字符的 Unicode 值和/或查找 Unicode 值对应的字符。以下表达式将不同 Unicode 值赋值给 Code 变量:

Code = Asc("A")         ' Latin letter A (Unicode-value 65)
Code = Asc("€")         ' Euro character (Unicode-value 8364)
Code = Asc("Л")         ' Cyrillic letter Л (Unicode-value 1083)

相反,表达式

MyString = Chr(13)

确保使用数字值 13(表示硬换行符)初始化 MyString 字符串。

Basic 语言经常使用 Chr 命令在字符串中插入控制字符。因此,赋值语句

MyString = Chr(9) + "This is a test" + Chr(13)

确保在文本前面添加制表符(Unicode 值 9),并在文本后面添加硬换行符(Unicode 值 13)。

访问字符串的部分字符

Apache OpenOffice Basic 提供了四个返回部分字符串的函数:

Left(MyString, Length)
返回 MyString 的前 Length 个字符。
Right(MyString, Length)
返回 MyString 的最后 Length 个字符。
Mid(MyString, Start, Length)
Start 位置开始返回 MyString 的前 Length 个字符。
Len(MyString)
返回 MyString 中的字符数目。

下面是调用这些函数的几个示例:

Dim MyString As String
Dim MyResult As String
Dim MyLen As Integer

MyString = "This is a small test"
MyResult = Left(MyString,5)      ' Provides the string "This "
MyResult = Right(MyString, 5)    ' Provides the string " test"
MyResult = Mid(MyString, 8, 5)   ' Provides the string " a sm"
MyLen = Len(MyString)            ' Provides the value 21

搜索和替换

Apache OpenOffice Basic 提供了 InStr 函数,用于在另一个字符串中搜索部分字符串:

ResultString = InStr (MyString, SearchString)

SearchString 参数指定要在 MyString 中搜索的字符串。该函数返回一个数字,其中包含 SearchStringMyString 中首次出现的位置。如果要查找字符串的其他匹配项,还可以通过该函数指定 Apache OpenOffice Basic 开始搜索的可选起始位置。在这种情况下,该函数的语法为:

ResultString = InStr(StartPosition, MyString, SearchString)

在前面的示例中,InStr 忽略字符的大小写。要更改搜索以使 InStr 区分大小写,请添加参数 0,如以下示例中所示:

ResultString = InStr(MyString, SearchString, 0)

通过使用上面用于编辑字符串的函数,程序员可以在一个字符串中搜索并替换另一个字符串:

Function Replace(Source As String, Search As String, NewPart As String)
  Dim Result As String
  Dim StartPos As Long
  Dim CurrentPos As Long

  Result = ""
  StartPos = 1
  CurrentPos = 1

  If Search = "" Then
    Result = Source
  Else 
    Do While CurrentPos <> 0
      CurrentPos = InStr(StartPos, Source, Search)
      If CurrentPos <> 0 Then
        Result = Result + Mid(Source, StartPos, _
        CurrentPos - StartPos)
        Result = Result + NewPart
        StartPos = CurrentPos + Len(Search)
      Else
        Result = Result + Mid(Source, StartPos, Len(Source))
      End If                ' Position <> 0
    Loop 
  End If 

  Replace = Result
End Function

该函数通过 InStr 以循环方式在原始项 Source 中搜索传送的 Search 字符串。如果找到搜索项,则会提取表达式前面的部分,并将其写入到 Result 返回缓冲区中。它在搜索项 Search 所在的位置添加新的 Part 部分。如果找不到搜索项的其他匹配项,该函数将确定仍然保留的字符串部分,并将其添加到返回缓冲区中。函数返回以这种方式生成的字符串,作为替换过程结果。

由于替换部分字符序列是最常用的功能之一,因此,已扩展了 Apache OpenOffice Basic 中的 Mid 函数,以便自动执行此任务。以下示例将用字符串 is 替换 MyString 字符串中从第六个位置开始的三个字符。

Dim MyString As String
 
MyString = "This was my text"
Mid(MyString, 6, 3, "is")

设置字符串格式

Format 函数将数字的格式设置为字符串。为此,该函数需要指定一个 Format 表达式,然后将该表达式用作设置数字格式的模板。模板中的每个占位符可确保在输出值中相应地设置该项的格式。模板中的五个最重要的占位符是零 (0)、英镑符号 (#)、小数点号 (.)、逗号 (,) 和美元符号 ($) 字符。

模板中的 0 字符可确保始终在相应位置放置数字。如果没有提供数字,则会在其位置显示 0。

. 表示在特定于国家/地区的设置中由操作系统定义的小数点符号。

下面的示例说明了 0. 字符如何在表达式中定义小数点后面的数字:

MyFormat = "0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

同样,可以在数字前面添加零以达到所需的长度:

MyFormat = "0000.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0000,40"
MyString = Format(0.434, MyFormat)       ' Provides "0000,43"

, 表示操作系统使用的千位分隔符,而 # 表示一个数字或位置,仅当输入字符串需要时才会显示。

MyFormat = "#,##0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

Format 函数显示系统定义的相关货币符号以替代 $ 占位符(本示例假设已定义了欧洲语言环境):

MyFormat = "#,##0.00 $"   
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80 €" 
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80 €" 
MyString = Format(0.4, MyFormat)         ' Provides "0,40 €" 
MyString = Format(0.434, MyFormat)       ' Provides "0,43 €"

也可以使用 VBA 中用于设置日期和时间详细信息格式的 Format 指令:

sub main
    dim myDate as date
    myDate = "01/06/98"
    TestStr = Format(myDate, "mm-dd-yyyy") ' 01-06-1998
    MsgBox TestStr
end sub
Content on this page is licensed under the Public Documentation License (PDL).


Personal tools