AU3拆分字符串为若干子串-StringSplit

admin AutoIt3评论202字数 1172阅读模式

AU3拆分字符串为若干子串-StringSplit

StringSplit("字符串", "分隔符"[, 标志 = 0])

参 数

字符串 目标字符串.
分隔符 一或多个作为分隔符的字符 (区分大小写).
标志 [可选] 指定如何拆分字符串, 如果需要可以加入复合标志值:
$STR_CHRSPLIT (0) = 分隔符字符串中的每个字符都将作为分隔标志 (默认值)
$STR_ENTIRESPLIT (1) = 以整个分隔符字符串作为分隔标志
$STR_NOCOUNT (2) = 禁用返回计数的第一个元素 - 方便使用基于 0 开始的数组. 此时数组大小由UBound()函数检测.常量定义文件: StringConstants.au3

返 回 值

返回一个数组, 第一个元素 ($aArray[0]) 保存拆分后的子串数量,
其余元素 ($aArray[1],$aArray[2] 等等) 则保存拆分后的每个子字符串.
如果标志 = 2, 则返回第一元素不表示子串数量.

若未发现分隔符, 则 @error 设置为 1:
如果 "标志" 参数不是 $STR_NOCOUNT, 则 $aArray[0] 设置为 1, 并且完整字符串返回到 $aArray[1].
如果 "标志" 参数为 $STR_NOCOUNT, 则完整字符串返回到 $aArray[0].

备 注

若给定的分隔符是个空字符串 "", 则每个字符将作为数组元素返回.

如果分隔符字符串包含多个字符, 则函数操作取决于标志设置.
如果标志设置为 $STR_CHRSPLIT, 则使用分隔符中的单个字符拆分每个实例.
如果标志设置为 $STR_ENTIRESPLIT, 则使用整个分隔符拆分. 参阅下面的第二个示例

需要注意的是宏 @CRLF 实际上是一个 2 字符的字符串, 可能出现使用 @CR 和 @LF 拆分, 这将生成额外的空白的行, 这时应将标志参数设置为 $STR_ENTIRESPLIT.

本函数有时候可以代替 StringInStr() 函数, 因为本函数可以创建数组.

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    Local $sText = "This\nline\ncontains\nC-style breaks." ; 定义一个变量为文本字符串.

    ; 传递变量到 StringSplit(), 使用分隔符 '\n' 拆分变量
    ; 请注意, 标记参数被设置为 $STR_ENTIRESPLIT (1), 因为它可能使用 \ 或 n 拆分字符串.
    MsgBox($MB_SYSTEMMODAL, "", StringSplit($sText, '\n', $STR_ENTIRESPLIT)[2]) ; 使用数组索引直接访问数组.
    #cs
        返回内部临时字符串数组,可能包含下列值之一:
        $aArray[1] = "This"
        $aArray[2] = "line"
        ...
        $aArray[4] = "C-style breaks."
    #ce
EndFunc   ;==>Example

版权声明:文章图片资源来源于网络,如有侵权,请留言删除!!!
admin
  • 本文由 发表于 2024年4月10日 11:08:38
  • 转载请务必保留本文链接:https://www.58pxe.com/11733.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: