CharStrip & StrStrip: Remove character or string from another string
From NSIS Wiki
Jump to navigationJump to search
Author: Afrow UK (talk, contrib) |
Description
Two functions for removing:
- characters in a string;
- a sub-string in a string.
Usage
${CharStrip} [char] [in_string] [out_var] ${StrStrip} [string] [in_string] [out_var]
Examples
${CharStrip} "." "99.21" $R0 ; $R0 == "9921" ${StrStrip} "ja" "jaja la" $R0 ; $R0 == " la"
The Functions
Place the below code in a header and !include it at the top of your script.
Function CharStrip Exch $R0 #char Exch Exch $R1 #in string Push $R2 Push $R3 Push $R4 StrCpy $R2 -1 IntOp $R2 $R2 + 1 StrCpy $R3 $R1 1 $R2 StrCmp $R3 "" +8 StrCmp $R3 $R0 0 -3 StrCpy $R3 $R1 $R2 IntOp $R2 $R2 + 1 StrCpy $R4 $R1 "" $R2 StrCpy $R1 $R3$R4 IntOp $R2 $R2 - 2 Goto -9 StrCpy $R0 $R1 Pop $R4 Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd !macro CharStrip Char InStr OutVar Push '${InStr}' Push '${Char}' Call CharStrip Pop '${OutVar}' !macroend !define CharStrip '!insertmacro CharStrip' Function StrStrip Exch $R0 #string Exch Exch $R1 #in string Push $R2 Push $R3 Push $R4 Push $R5 StrLen $R5 $R0 StrCpy $R2 -1 IntOp $R2 $R2 + 1 StrCpy $R3 $R1 $R5 $R2 StrCmp $R3 "" +9 StrCmp $R3 $R0 0 -3 StrCpy $R3 $R1 $R2 IntOp $R2 $R2 + $R5 StrCpy $R4 $R1 "" $R2 StrCpy $R1 $R3$R4 IntOp $R2 $R2 - $R5 IntOp $R2 $R2 - 1 Goto -10 StrCpy $R0 $R1 Pop $R5 Pop $R4 Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd !macro StrStrip Str InStr OutVar Push '${InStr}' Push '${Str}' Call StrStrip Pop '${OutVar}' !macroend !define StrStrip '!insertmacro StrStrip'