当前位置: 首页 > 文档资料 > NSIS 用户手册 >

C.4 在字串里查找

优质
小牛编辑
131浏览
2023-12-01
 ; 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