Moin Moin,
für aktuelles Projekt brauchte ich eine Funktion zur Formatierung von Zahlen.
Konkret wollte ich Tausender-Trennzeichen, also statt
123456789 wollte ich 123.456.789
Ich habe ein wenig die Suche hier gequält und die "_StringAddThousandsSep" Funktion gefunden ... die aber nicht mehr bei AutoIt dabei ist - und die sah mir doch zu übertrieben aus.
Naja, meine Lösung funktioniert, es geht aber ja wahrscheinlich viel eleganter oder?
Ich habe mir zwar die Hilfe von "StringRegExpReplace" angesehen ... aber ganz ehrlich, das mit den Suchausdrücken und den geschweiften Klammern habe ich nicht verstanden ...
Naja, hier meine Version:
Spoiler anzeigen
#include <array.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _AddThousandDot($iZahl)
Local $aZahl[1] ; Array
Local $sZahl ; String
Local $iZaehler ; Integer
$sZahl = String($iZahl) ; Ersteinmal in einen String wandel
If $sZahl = "" Then ;Ups, das Ding war leer!
SetError(1)
Return 1
EndIf
;Nun bauen wir ein Array
; $aZahl[0] enthält die Anzahl der Elemente
; $aZahl[x] die jeweilige Stelle
For $i = 1 To StringLen($sZahl) Step 1
_ArrayAdd($aZahl,StringMid($sZahl,$i,1))
$aZahl[0] = $aZahl[0] + 1
Next
$iZaehler = 0
$sZahl = ""
;Nun bauen wir die Zahl Rückwärts wieder zusammen
For $i = $aZahl[0] To 1 Step -1
$iZaehler = $iZaehler + 1 ; Stellen mitzählen!
$sZahl = $aZahl[$i] & $sZahl
If $iZaehler = 3 And $i <> 1 Then ;Hui, die dritte Stelle - aber nicht die letzte!
$sZahl = "." & $sZahl ; einen Punkt dazu
$iZaehler = 0 ; und neu mit Zählen anfangen
EndIf
Next
Return $sZahl
EndFunc
MsgBox(0,"ACHTUNG!","Gleich geht es los - diese Fenster dient nur dem Zweck" & @CRLF & _
"das das Script vollständig geladen wird bevor die Funktion aufgerufen wird")
MsgBox(0,"Formatierte Zahlen",_AddThousandDot(1234567890) & @CRLF & _AddThousandDot(111222333))
Exit
Ich freue mich jetzt schon auf die kürzeste Lösung
BLinz