RegExReplaceF全部替换函数.ahk
; https://www.autohotkey.com/boards/viewtopic.php?f=76&t=67479 str := "a 100 b 200" MsgBox % RegExReplaceF(str, "\d+" , "Add8") ; -> "a 108 b 208" MsgBox % RegExReplaceF(str, "O)(\d+)", "Add5") ; -> "a 105 b 205" MsgBox % RegExReplaceF(str, "O)(\d+)", Func("AddN").Bind(3)) ; -> "a 103 b 203" Add8(match) { return match + 8 } Add5(match) { return match.1 + 5 } AddN(num, match) { return match.1 + num } RegExReplaceF(ByRef Haystack, NeedleRegEx, FunctionName, ByRef OutputVarCount := "", Limit := -1, StartingPosition := 1) { local out VarSetCapacity(out, VarSetCapacity(Haystack)) OutputVarCount := 0 while ( pos := RegExMatch(Haystack, NeedleRegEx, match, StartingPosition) ) { out .= SubStr(Haystack, StartingPosition, pos-StartingPosition) out .= %FunctionName%(match) len := IsObject(match) ? match.Len : StrLen(match) StartingPosition := pos + len if (++OutputVarCount = Limit) break } return out . SubStr(Haystack, StartingPosition) }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)