Deutsche Zahlenkonvertierung

  • Hi, hier ein Miniskript, um englische Zahlen (123456.789) nach Deutsch umzuwandeln (123.456,78 )

    [autoit]

    Func DeuKonv($numb)
    Local $tmp
    $numb = StringSplit($numb, '.')
    $digit = StringSplit($numb[1], '')
    For $i = $digit[0] - 3 To 1 Step -3
    $digit[$i] &= '.'
    Next
    For $i = 1 To $digit[0]
    $tmp &= $digit[$i]
    Next
    If $numb[0] = 2 Then $digit = ',' & StringLeft($numb[2], 2)
    Return $tmp & $digit
    EndFunc

    [/autoit]

    Wenns noch jemand kürzen kann, bitte sehr :D

  • Hi,
    so ist es kürzer:

    [autoit]

    #include <String.au3>

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(DeuKonv(1124.89547) & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    Func DeuKonv($numb)
    $aPos = StringRegExp($numb, "\d+\.?(\d*)", 3)
    $numb = StringReplace($numb, ".", ",")
    For $x = StringLen($numb) - StringLen($aPos[0]) - 1 To 1 Step -3
    If StringLen($numb) - StringLen($aPos[0]) - 1 > $x Then $numb = _StringInsert($numb, ".", $x)
    Next
    Return $numb
    EndFunc ;==>DeuKonv

    [/autoit]
    • Offizieller Beitrag

    Möglichkeiten gibt es da einige... ;)

    [autoit]

    Func _NumberFormatThousand($vNumber, $ret='DE') ; bis 18 Vorkommastellen
    Local $sOut = '', $a = StringRegExp(StringReplace($vNumber, '.', ','), "(-?\d{1,3})(\d{3})?(\d{3})?(\d{3})?(\d{3})?(\d{3})?(?:\Z|(,\d+))", 3)
    For $i = 0 To UBound($a) -1
    If $a[$i] <> '' Then $sOut &= '.' & $a[$i]
    Next
    If $ret <> 'DE' Then Return StringTrimLeft(StringReplace(StringReplace($sOut, '.', ','), ',,', '.'), 1)
    Return StringTrimLeft(StringReplace($sOut, '.,', ','), 1)
    EndFunc

    [/autoit]