Jump to content
Sign in to follow this  
Timo

StringFormat?

Recommended Posts

Timo

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

Share this post


Link to post
Share on other sites
this-is-me

Read again under "Precision Specification".


Who else would I be?

Share this post


Link to post
Share on other sites
Timo

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

Share this post


Link to post
Share on other sites
Timo

Many thanks Manadar.

Good idea, much easier than StringFormat.

But what about SF?

Is this not possible with it?


Bye...,Timo

Share this post


Link to post
Share on other sites
this-is-me

Another (possibly more politically correct) way to do this:

MsgBox(0,"",Number("4.160,00") * 1000)

Who else would I be?

Share this post


Link to post
Share on other sites
SmOke_N

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
SmOke_N

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
GaryFrost

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
this-is-me

ROFL It is amazing how many methods of achieving the same goal can be imagined by a group of people.


Who else would I be?

Share this post


Link to post
Share on other sites
SmOke_N

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
SmOke_N

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.