找回密码
 加入
搜索
查看: 1788|回复: 3

[效率算法] MAC地址格式转换效率求助[已解决]

[复制链接]
发表于 2016-7-26 16:11:00 | 显示全部楼层 |阅读模式
本帖最后由 骗子 于 2016-7-28 16:14 编辑

批量将类似 '10:1B:54:21:C8:94'的MAC地址修改为 '101B:-5421-C894'
目前想法就是先把源数据按行读取,然后对于每一行进行处理,然后在合到一起
下面的是我针对单个的转换,感觉太啰嗦,求个简单效率的方法,谢谢各位
$mac = '10:1B:54:21:C8:94'
$mac = StringRegExpReplace($mac, ':', '', 1)
$mac = StringRegExpReplace($mac, ':', '-', 1)
$mac = StringRegExpReplace($mac, ':', '', 1)
$mac = StringRegExpReplace($mac, ':', '-', 1)
$mac = StringRegExpReplace($mac, ':', '', 1)
MsgBox(0, 0, $mac)

第二个方法,感觉也没好到哪里去
$mac = '10:1B:54:21:C8:94'
For $t = 0 To 4
        If Mod($t, 2) = 0 Then
                $mac = StringRegExpReplace($mac, ':', '', 1)
        Else
                $mac = StringRegExpReplace($mac, ':', '-', 1)
        EndIf
Next
MsgBox(0, 0, $mac)


第3、4种方法,看上去简单多了

#include <Array.au3>
$mac = '10:0B:04:21:08:94'
$a = StringSplit($mac, ":", 2)
If UBound($a) = 6 Then $m = $a[0] & $a[1] & "-" & $a[2] & $a[3] & "-" & $a[4] & $a[5]
$a = StringRegExp($mac, '\w{2}', 3)
If UBound($a) = 6 Then $n = $a[0] & $a[1] & "-" & $a[2] & $a[3] & "-" & $a[4] & $a[5]
MsgBox(0, 0, $mac & @CRLF & $m & @CRLF & $n)
发表于 2016-7-26 18:42:30 | 显示全部楼层
先作个判断再转换吧.
Local $mac = '10:0B:04:21:08:94'
If Not StringRegExp($mac, '^(?:\w{2}[:-]){5}\w{2}') Then Exit MsgBox(16, 'err', 'mac not match.')
$mac = StringRegExpReplace($mac, '^(\w{2})\W(\w{2})\W(\w{2})\W(\w{2})\W(\w{2})\W(\w{2}), '$1$2-$3$4-$5$6')
MsgBox(0, '', $mac)

评分

参与人数 1金钱 +30 收起 理由
骗子 + 30

查看全部评分

发表于 2016-7-26 22:16:30 | 显示全部楼层
回复 2# Alam
Local $mac = '10:0B:04:21:08:94' & @CRLF &  '11:1B:24:31:48:64'
$mac = StringRegExpReplace($mac, '([0-9a-zA-Z]{2}):([0-9a-zA-Z]{2}):([0-9a-zA-Z]{2}):([0-9a-zA-Z]{2}):([0-9a-zA-Z]{2}):([0-9a-zA-Z]{2})', '${1}${2}:-${3}${4}-${5}${6}')
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $mac = ' & $mac & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

评分

参与人数 1金钱 +30 收起 理由
骗子 + 30

查看全部评分

发表于 2016-8-1 11:04:33 | 显示全部楼层
先作个判断再转换吧.
Alam 发表于 2016-7-26 18:42



中间少了个   '
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-20 11:55 , Processed in 0.092028 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表