Jump to content

Recommended Posts

Posted

Hi,

I need your help.

I have a number in the format "4.160,00" and I want to convert it to "4160" or "4160.00".

I've studied the help (StringFormat), but I didn't find a solution...

Can someone help me please?

Bye,

Timo

Bye...,Timo

Posted

Can you please give me an example?

My English ist not the best, I tried but but I did not get it to work.

It would be very nice if you could help me.

Thanks,

Timo

Bye...,Timo

Posted

Many thanks Manadar.

Good idea, much easier than StringFormat.

But what about SF?

Is this not possible with it?

Bye...,Timo

  • Moderators
Posted

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.

  • Moderators
Posted (edited)

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.

  • Moderators
Posted

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.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...