Ticket #2173: ___StringProper.au3

File ___StringProper.au3, 950 bytes (added by amarcruz, 13 years ago)

_StringProper() enhanced version

Line 
1Func ___StringProper($sIn)
2        Static Local $sRE = "(?:[ODL]'|Mc)([[:lower:]])|[IVXLCDM]([ivxlcdm]+)\b"
3;       If Not IsString($sIn) Then
4;               Return SetError(1, 0, "")
5;       EndIf
6        Local $CapNext = 1
7        Local $sOut = ""
8        Local $aStr = StringSplit(StringLower($sIn), "")
9        Local $nLen = $aStr[0]
10        Local $ix, $ch
11
12        For $ix = 1 To $nLen
13                $ch = $aStr[$ix]
14                Select
15                        Case $CapNext = 1
16                                If StringIsAlNum($ch) Or ($ch == "'") Then ;Or StringInStr("',", $ch) Then
17                                        $ch = StringUpper($ch)
18                                        $CapNext = 0
19                                EndIf
20                        Case Not (StringIsAlnum($ch) Or ($ch == "'"))
21                                $CapNext = 1
22                EndSelect
23                $sOut &= $ch
24        Next
25
26        $aStr = StringRegExp($sOut, $sRE, 1)
27        While @error = 0
28                $ix = @extended
29                $ch = $aStr[UBound($aStr)-1]
30                $sOut = StringLeft($sOut, $ix-(StringLen($ch)+1)) & StringUpper($ch) & StringMid($sOut, $ix)
31                $aStr = StringRegExp($sOut, $sRE, 1, $ix)
32        WEnd
33
34        Return SetError(0, $nLen, $sOut)
35EndFunc   ;==>_StringProper