StrLower

From NSIS Wiki
Jump to navigationJump to search
Author: anonymous (talk, contrib)


Description

This function converts a string into lower case. This doesn't work with latin accents and Unicode.

The Function

; StrLower 
; Converts the string on the stack to lowercase (in an ASCII sense) 
; Usage: 
; Push 
; Call StrLower 
; Pop 
 
Function StrLower 
Exch $0 ; Original string 
Push $1 ; Final string 
Push $2 ; Current character 
Push $3 
Push $4 
StrCpy $1 "" 
Loop: 
StrCpy $2 $0 1 ; Get next character 
StrCmp $2 "" Done 
StrCpy $0 $0 "" 1 
StrCpy $3 122 ; 122 = ASCII code for z 
Loop2: 
IntFmt $4 %c $3 ; Get character from current ASCII code 
StrCmp $2 $4 Match 
IntOp $3 $3 - 1 
StrCmp $3 91 NoMatch Loop2 ; 90 = ASCII code one beyond Z 
Match: 
StrCpy $2 $4 ; It 'matches' (either case) so grab the lowercase version 
NoMatch: 
StrCpy $1 $1$2 ; Append to the final string 
Goto Loop 
Done: 
StrCpy $0 $1 ; Return the final string 
Pop $4 
Pop $3 
Pop $2 
Pop $1 
Exch $0 
FunctionEnd

Credits

StrUpper's idea was provided by Dave Laundon aka eccles.