Jump to content
Sign in to follow this  
Timo

StringFormat?

Recommended Posts

Let's all join in the fun:

MsgBox(0, '', _Convert("4.160,00"))

Func _Convert($sText)
    Return StringReplace(StringReplace($sText, '.', ''), ',', '.')
EndFunc


Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Continued...

MsgBox(0, '', _Convert("4.160,00"))

Func _Convert($sText)
    Local $sHold, $sMid
    For $iCC = 1 To StringLen($sText)
        $sMid = StringMid($sText, $iCC, 1)
        If $sMid <> '.' And $sMid <> ',' Then $sHold &= $sMid
        If $sMid = ',' Then $sHold &= '.'
    Next
    Return $sHold
EndFunc


Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Informational for those of you who wish to add commas into numbers

oldy so probably can be done with less code now

http://www.autoitscript.com/forum/index.ph...ost&p=87193


SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

Informational for those of you who wish to add commas into numbers

oldy so probably can be done with less code now

http://www.autoitscript.com/forum/index.ph...ost&p=87193

Here's a go at it.

Func _StrAddComma($sStr, $sSeperator = ',', $sEnd = '.')
    If $sSeperator = -1 Or $sSeperator = Default Then $sSeperator = ','
    If $sEnd = -1 Or $sEnd = Default Then $sEnd = '.'
    Local $aNum = StringSplit($sStr, $sEnd), $nHold, $aSRE, $bUB, $iAdd
    If UBound($aNum) > 2 Then
        $aSRE = StringRegExp($aNum[1], '(\d+)(\d{3})', 3)
        $bUB = True
    Else
        $aSRE = StringRegExp($sStr, '(\d+)(\d{3})', 3)
    EndIf
    If UBound($aSRE) = 2 Then
        While IsArray($aSRE)
            $nHold = $sSeperator & $aSRE[1] & $nHold
            $aSRE = StringRegExp($aSRE[0], '(\d+)(\d{3})', 3)
            $iAdd += 1
        WEnd
    EndIf
    If $bUB And $nHold Then
        Return StringTrimRight($sStr, $iAdd * 3) & $nHold & $sEnd & $aNum[2]
    ElseIf $nHold Then
        Return StringTrimRight($sStr, $iAdd * 3) & $nHold
    EndIf
    Return SetError(1, 0, $sStr)
EndFunc

Edit:

Pasted the wrong version.

Edit2:

Fixed a but I noticed.

Edit3:

Put it in scripts in scraps and shortened it to 22 lines: http://www.autoitscript.com/forum/index.ph...st&p=255542

Edit4:

Fixed a bug that xcal noticed ... thanks.

Edited by SmOke_N

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

It seems to stop working at 9223372036854775808. It works at 9223372036854775807. Don't ask how I know. :whistle:

edit - numbers reversed

I had $iAdd = 1 ;)

Going to fix it now.

MsgBox(64, '', _StrAddComma('9223372036854775808'))
MsgBox(64, '', _StrAddComma('9223372036854775807'))

Func _StrAddComma($sStr, $sSeperator = ',', $sEnd = '.')
    If $sSeperator = -1 Or $sSeperator = Default Then $sSeperator = ','
    If $sEnd = -1 Or $sEnd = Default Then $sEnd = '.'
    Local $aNum = StringSplit($sStr, $sEnd), $nHold, $aSRE, $bUB, $iAdd
    If UBound($aNum) > 2 Then
        $aSRE = StringRegExp($aNum[1], '(\d+)(\d{3})', 3)
        $bUB = True
    Else
        $aSRE = StringRegExp($sStr, '(\d+)(\d{3})', 3)
    EndIf
    If UBound($aSRE) = 2 Then
        While IsArray($aSRE)
            $nHold = $sSeperator & $aSRE[1] & $nHold
            $aSRE = StringRegExp($aSRE[0], '(\d+)(\d{3})', 3)
            $iAdd += 1
        WEnd
    EndIf
    If $bUB And $nHold Then
        Return StringTrimRight($sStr, $iAdd * 3) & $nHold & $sEnd & $aNum[2]
    ElseIf $nHold Then
        Return StringTrimRight($sStr, $iAdd * 3) & $nHold
    EndIf
    Return SetError(1, 0, $sStr)
EndFunc

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...