본문 바로가기

NSIS/Reference

[NSIS] 원본 문자열의 뒤에서부터 원하는 문자의 인덱스 찾기

반응형
# 호출 예
# ${IndexOf} '반환' '찾을 문자열' '원본 문자열'
# ${IndexOf} $0 "b" "abcd"
# $0 == 3
!macro _RIndexOf un
	Function ${un}_RIndexOf
		Exch $R0
		Exch
		Exch $R1
		Push $R2
		Push $R3
		StrCpy $R3 $R0
		StrCpy $R0 0
		IntOp $R0 $R0 + 1
		StrCpy $R2 $R3 1 -$R0
		StrCmp $R2 "" +2
		StrCmp $R2 $R1 +2 -3
		StrCpy $R0 -1
		Pop $R3
		Pop $R2
		Pop $R1
		Exch $R0
	FunctionEnd
!macroend
!insertmacro _RIndexOf ""
!insertmacro _RIndexOf "un."
!macro RIndexOf OUTPUT str_find str_origin
	Push "${str_find}"
	Push "${str_origin}"
	!ifndef __UNINSTALL__
		Call _RIndexOf
	!else
		Call un._RIndexOf
	!endif
	Pop "${OUTPUT}"
!macroend
!define RIndexOf "!insertmacro RIndexOf"
반응형