# 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
    }