Jump to content

Recommended Posts

Posted

Hello

I have a timer that periodically changes.

I can be

1) $timer = "5 days, 1 hours, 57 minutes"

or

2) $timer = "10 hours, 10 minutes"

or

3) $timer = "9 minutes"

I need to extract those numbers and put them into an array.

I tried with

$string = StringRegExp($timer, "[0-9]", 3)

but in the first example it returns an array containing 4 elements: $string[0] = 5, $string[1] = 1, $string[2] = 5 and $string[3] = 7. The same is for the 2nd example.

How can I extract the single numbers? (e.g. $string[0] = 5, $string[1] = 1 and $string[2] = 57)

Thanks for your help

  • Moderators
Posted

FSoft,

This works for me: :D

Global $aTimer[3] = ["5 days, 1 hours, 57 minutes", "10 hours, 10 minutes", "9 minutes"]

For $i = 0 To UBound($aTimer) - 1

    ; Extract numbers
    $aValues = StringRegExp($aTimer[$i], "(?U)(?<=\A|\D)(\d+)[\Z\D]", 3)

    ; Add leading 0 if required
    For $j = 0 To UBound($aValues) - 1
        $aValues[$j] = StringFormat("%02i", $aValues[$j])
    Next

    ; Display number filling blanks if required
    Switch UBound($aValues)
        Case 3
            ConsoleWrite($aValues[0] & ":" & $aValues[1] & ":" & $aValues[2] & @CRLF)
        Case 2
            ConsoleWrite("00:" & $aValues[0] & ":" & $aValues[1] & @CRLF)
        Case 1
            ConsoleWrite("00:00:" & $aValues[0] & @CRLF)
    EndSwitch

Next

SRE:

(?U)       = Smallest matches
(?<=\A|\D) = Must be preceded by the beginning of the line or a non-digit
(\d+)      = Capture digits
[\Z\D]     = Until the end of the line or a non-digit

The other code is to make it look pretty! :oops:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

  Reveal hidden contents

 

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...