StrReplace() / StringReplace

用新字符串替换指定的子字符串.

StrReplace() [v1.1.21+]

ReplacedStr := StrReplace(Haystack, SearchText , ReplaceText, OutputVarCount, Limit := -1)

参数

Haystack

内容被搜索和替换的字符串.

SearchText

要搜索的字符串. 如果没有启用 StringCaseSense, 那么匹配过程不区分大小写.

ReplaceText

用来替换 SearchText 的文本. 如果省略或为空, 那么 SearchText 会被替换为空. 换句话说, 它会被从 OutputVar 删除.

OutputVarCount

指定用来存储替换次数的变量(没有则为 0).

Limit

如果 Limit 省略, 那么默认为 -1, 将替换所有Haystack 中要替换的内容. 否则, 请指定允许的最大替换数量. Haystack 最后一个替换对象右边的内容将保持不变.

返回值

这个函数返回 Haystack 的一个版本, 其内容已经被操作所替换. 如果不需要替换, Haystack 将不会被修改.

示例

; 移除剪贴板中所有的 CR+LF:
Clipboard := StrReplace(Clipboard, "`r`n")

; 用加号替换所有空格:
NewStr := StrReplace(OldStr, A_Space, "+")

; 移除变量中所有空行:
Loop
{
    MyString := StrReplace(MyString, "`r`n`r`n", "`r`n", Count)
    if (Count = 0)  ; 不再需要更多的替代.
        break
}

StringReplace

不推荐: 不推荐在新脚本中使用此命令. 使用 StrReplace 函数作为代替.

StringReplace, OutputVar, InputVar, SearchText , ReplaceText, ReplaceAll?

参数

OutputVar

用来存储替换后的新字符串的变量名.

InputVar

需要被读取内容的变量名. 不要把名称括在百分号中, 除非您希望使用变量的内容作为被解析的变量名.

SearchText

要搜索的字符串. 如果没有启用 StringCaseSense, 那么匹配过程不区分大小写.

ReplaceText

用来替换 SearchText 的文本. 如果省略或为空, 那么 SearchText 会被替换为空. 换句话说, 它会被从 OutputVar 删除.

ReplaceAll?

如果省略, 那么只替换 SearchText 的首个匹配. 如果此参数为 1, A 或 All, 那么替换所有匹配.

指定单词 UseErrorLevel 可以把替换的次数保存到 ErrorLevel(没有则为 0). UseErrorLevel 包含了 "All" 的作用.

ErrorLevel

当最后一个参数为 UseErrorLevel 时, ErrorLevel 中会保存替换的次数(没有则为 0). 否则, 如果在 InputVar 中没有找到 SearchText 则 ErrorLevel 被置为 1, 找到则置为 0.

备注

在这个及其他所有命令中,OutputVarInputVar 中可以使用相同的变量.

内置变量 %A_Space%%A_Tab% 分别包含了单个空格和单个 tab 字符. 当您需要搜索单独的空格或 tab 或在 SearchText 的开始或末尾含有空格或 tab 时, 这很有用.

[v1.0.45+]: 为了改善性能和内存的利用率, AllSlow 选项已经作废. 尽管仍可以指定它, 但不会有效果.

示例

; 移除剪贴板中所有的 CR+LF:
StringReplace, Clipboard, Clipboard, `r`n, , All

; 用加号替换所有空格:
StringReplace, NewStr, OldStr, %A_Space%, +, All

; 移除变量中所有空行:
Loop
{
    StringReplace, MyString, MyString, `r`n`r`n, `r`n, UseErrorLevel
    if (ErrorLevel = 0)  ; 不需要再进行替换.
        break
}

相关

RegExReplace(), IfInString, StringCaseSense, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StrLen() / StringLen, StringLower, StringUpper, StringGetPos, if var is type