NSIS 在字串里查找脚本

[code]; StrStr
; 输入,堆栈顶 = 要查找的字串
; 堆栈顶-1 = 在该字串中查找
; 输出,堆栈顶 (替换为字串剩余部分)
; 不改变其它变量值。
;
; 用法:
; Push “this is a long ass string”
; Push “ass”
; Call StrStr
; Pop $R0
; ($R0 在这里为 “ass string”)

Function StrStr
Exch $R1 ; st=haystack,old$R1, $R1=needle
Exch ; st=old$R1,haystack
Exch $R2 ; st=old$R1,old$R2, $R2=haystack
Push $R3
Push $R4
Push $R5
Push $R6
StrLen $R3 $R1
StrLen $R6 $R2
StrCpy $R4 0
; $R1=needle
; $R2=haystack
; $R3=len(needle)
; $R4=cnt
; $R5=tmp
loop:
StrCpy $R5 $R2 $R3 $R4
StrCmp $R5 $R1 done
IntCmp $R4 $R6 done
IntOp $R4 $R4 + 1
Goto loop
done:
StrCpy $R1 $R2 “” $R4
Pop $R6
Pop $R5
Pop $R4
Pop $R3
Pop $R2
Exch $R1
FunctionEnd
[/code]