charon Posted February 22, 2015 Share Posted February 22, 2015 I am trying to turn this "00204070F48F" into this: "00:20:40:70:F4:8F". I thought I could use _StringInsert but doesn't seem to be working #include <MsgBoxConstants.au3> #include <String.au3> ;turn this "00204070F48F" into this: "00:20:40:70:F4:8F" $x = "00204070F48F" $StrLen = StringLen($x) $sInsertString = ":" $pos = 2 DIM $results[6] For $i = 0 To 4 $results[$i] = _StringInsert ( $x, $sInsertString, $pos ) $pos = $pos + 2 msgbox(0, "", $results[$i]) Next Link to comment Share on other sites More sharing options...
water Posted February 22, 2015 Share Posted February 22, 2015 Something like this: #include <MsgBoxConstants.au3> #include <String.au3> ;turn this "00204070F48F" into this: "00:20:40:70:F4:8F" Global $sX = "00204070F48F" Global $sResult, $iPos = 2, $sInsertString = ":" For $i = 0 To 6 $sResult = $sResult & StringMid($sX, $i * 2 + 1, 2) & $sInsertString Next $sResult = StringLeft($sResult, 17) MsgBox(0, "", $sResult) My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
Rockerfeller Posted February 22, 2015 Share Posted February 22, 2015 (edited) #include <String.au3> $x = "00204070F48F" $sInsertString = ":" For $i = 10 To 2 Step -2 $x = _StringInsert($x, $sInsertString, $i) Next MsgBox(0, "", $x) Edited February 22, 2015 by Rockerfeller Link to comment Share on other sites More sharing options...
water Posted February 22, 2015 Share Posted February 22, 2015 I'm sure some RegExp gurus will chime in with a one-liner My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
kylomas Posted February 22, 2015 Share Posted February 22, 2015 and yet another... local $str = '00204070F48F' ConsoleWrite(stringtrimright(stringregexpreplace($str,'(.{2})','$1:'),1) & @CRLF) Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
water Posted February 22, 2015 Share Posted February 22, 2015 Ahh ... here they are My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
mikell Posted February 22, 2015 Share Posted February 22, 2015 Obviously $str = '00204070F48F' MsgBox(0, "", StringRegExpReplace($str, "..\K(?!$)", ":") ) Link to comment Share on other sites More sharing options...
kylomas Posted February 22, 2015 Share Posted February 22, 2015 and again... local $aTmp = stringsplit($str,'',2), $out for $1 = 0 to ubound($aTmp) - 1 $out &= ( mod($1,2) ? $aTmp[$1] & ':' : $aTmp[$1]) Next if stringright($out,1) = ':' then $out = stringtrimright($out,1) ConsoleWrite($out & @CRLF) Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
kylomas Posted February 22, 2015 Share Posted February 22, 2015 Hey mikell, I might be getting the hang of this Klingon... local $str = '00204070F48F' ConsoleWrite(stringregexpreplace($str,'(.{2})(?!$)','$1:') & @CRLF) Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
Solution mikell Posted February 22, 2015 Solution Share Posted February 22, 2015 (edited) Nice StringRegExpReplace($str, "..(?!$)", "$0:") But the code in post #7 is better because you get rid of backreferences Edited February 22, 2015 by mikell Link to comment Share on other sites More sharing options...
SadBunny Posted February 22, 2015 Share Posted February 22, 2015 (edited) Another way, a variant on kylomas' solution but with a positive lookahead assertion. Can't top mikell's solution in terms of leetness though. $x = StringRegExpReplace($str, "(..)(?=.)", "$1:") Edited February 22, 2015 by SadBunny Roses are FF0000, violets are 0000FF... All my base are belong to you. Link to comment Share on other sites More sharing options...
SadBunny Posted February 22, 2015 Share Posted February 22, 2015 Or like this, with a recursive function and a shorthand if: $str = fix('00204070F48F') ConsoleWrite($str & @CRLF) Func fix($x) Return StringLen($x) == 2 ? $x : StringLeft($x, 2) & ":" & fix(StringMid($x, 3)) EndFunc kylomas 1 Roses are FF0000, violets are 0000FF... All my base are belong to you. Link to comment Share on other sites More sharing options...
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