rootx Posted September 13, 2017 Posted September 13, 2017 (edited) Hi, I need help to write a regex. possible cases: Pos1,Pos2,Pos3 38/1,42/1,4367/100 <------------------- $ArLa[3]/(60*60) 9/1 ,2341/100,8/1<------------------- $ArLa[2]/(60*60) My target is check the /100, and if is true calculate coord in a specific way. Problem is when sometimes the position in this array changed but I need to found every time /100 to calculate 4367/100/(60*60) and ,2341/100/(60*60). THX Dim $coord [2][3] = [["38/1", "42/1", "4367/100"],["9/1", "2332/100", "8/1"]] For $x = 0 to UBound($coord)-1 $lat = $coord[$x][0]&","&$coord[$x][1]&","&$coord[$x][2] ConsoleWrite($lat&@CR) ConsoleWrite(StringSplit($coord[$x][1], '/', $STR_ENTIRESPLIT)[2]&@CR);<------ work but not elegant Next I found A way ConsoleWrite(StringSplit($coord[$x][1], '/', $STR_ENTIRESPLIT)[2]&@CR) Edited September 13, 2017 by rootx
jguinch Posted September 13, 2017 Posted September 13, 2017 i'm not sure to understand.... Local $coord = ["38/1,42/1,4367/100", "9/1,2332/100,8/1"] Local $sCalcExpression = "/(60*60)" For $i = 0 To UBound($coord) - 1 $sVal = StringRegExpReplace($coord[$i], ".*(?:^|,)(\d+\/100)\b.*", "$1") $sRes = Execute($sVal & $sCalcExpression) ConsoleWrite($sVal & $sCalcExpression & " = " & $sRes & @CRLF) Next rootx 1 Reveal hidden contents Network configuration UDF, _DirGetSizeByExtension, _UninstallList Firefox ConfigurationArray multi-dimensions, Printer Management UDF
rootx Posted September 13, 2017 Author Posted September 13, 2017 i'm not sure to understand.... Thx, anyway the values in the array correspond to 38/1,42/1,4367/100 = 38Degress, 42Minutes, 43.67 Seconds Gmaps like decimal 38+42/60+43.67(60*60) = 38,71213055555556
Malkey Posted September 13, 2017 Posted September 13, 2017 Sometimes it is easier not to use Regex. Hope this helps. #include <Array.au3> Local $coord [2][3] = [["38/1", "42/1", "4367/100"],["9/1", "2332/100", "8/1"]] ReDim $coord[UBound($coord)][UBound($coord, 2) + 1] Local $Deg For $i = 0 To UBound($coord) - 1 For $j = 0 To UBound($coord, 2) - 2 $sRes = Execute($coord[$i][$j]) / 60 ^ $j $Deg += $sRes Next $coord[$i][$j] = $Deg $Deg = 0 Next _ArrayDisplay($coord, Default, Default, Default, Default, "Deg|Min|Sec|Total Num Degs")
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now