Jump to content

Extract numbers with StringRegExp HELP!


Floppy
 Share

Recommended Posts

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

Link to comment
Share on other sites

  • Moderators

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:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
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
 Share

  • Recently Browsing   0 members

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