StringReplace


替换字符串中指定的子字符串为新的字符串。

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 。

注意

在这个命令以及所有其它命令中,OutputVar 可以和 InputVar 相同。

内置变量 %A_Space%%A_Tab% 包含了一个单独的空格和一个单独的制表符。当你需要单独搜索空格或制表符,或者在 SearchText 的开头或结尾使用空格或制表符的时候会非常有用。

在 v1.0.45 版本中,为了改进性能和内存利用,AllSlow 参数已过时。虽然仍然可以指定它,但是不会有任何效果。

相关命令

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

示例

; 在剪贴板中移除换行:
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
}