StringReplace
用新字符串替换指定的子字符串.
OutputVar := StrReplace(Haystack, SearchText [, ReplaceText, OutputVarCount, Limit := -1]) ; v1.1.21+ StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?]
参数
- OutputVar
用来存储替换后的新字符串的变量名.
- InputVar or Haystack
-
需要被读取内容的变量名. 不要把名称括在百分号中, 除非您希望使用变量的内容作为被解析的变量名.
因为 StrReplace() 是一个函数, Haystack 可以是一个表达式.
- SearchText
要搜索的字符串. 如果没有启用 StringCaseSense, 那么匹配过程不区分大小写.
- ReplaceText
用来替换 SearchText 的文本. 如果省略或为空, 那么 SearchText 会被替换为空. 换句话说, 它会被从 OutputVar 删除.
- OutputVarCount (StrReplace)
用来存储替换次数的变量(没有则为0).
- Limit (StrReplace)
如果 Limit 省略, 那么默认为 -1, 将替换所有在 Haystack 中要替换的内容. 否则, 如果指定一个允许替换的最大数, 那么在 Haystack 中最后一个替换对象后面的内容将保持不变.
- ReplaceAll? (StringReplace)
如果省略, 那么只替换 SearchText 的首个匹配. 如果此参数为 1, A 或 All, 那么替换所有匹配.
指定单词 UseErrorLevel 可以把替换的次数保存到 ErrorLevel (没有则为 0). UseErrorLevel 包含了 "All" 的作用.
ErrorLevel
StrReplace: ErrorLevel 没有设置.
当最后一个参数为 UseErrorLevel 时, ErrorLevel 中会保存替换的次数 (没有则为 0). 否则,如果在 InputVar 中没有找到 SearchText 则 ErrorLevel 被置为 1,找到则置为 0.
备注
在这个及其他所有命令中,OutputVar 和 InputVar 中可以使用相同的变量.
内置变量 %A_Space% 和 %A_Tab% 分别包含了单个空格和单个 tab 字符. 当您需要搜索单独的空格或 tab 或在 SearchText 的开始或末尾含有空格或 tab 时, 这很有用.
在 v1.0.45, 为了改善性能和内存的利用率, AllSlow 选项已经作废. 尽管仍可以指定它, 但不会有效果.
相关
RegExReplace(), IfInString, StringCaseSense, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringGetPos, if var is type
示例
; 移除剪贴板中所有的 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 }