Как вставить пробел через каждые два символа? - PullRequest
1 голос
/ 03 июня 2010

Я хотел бы разбить строки байтов, например AAFF10DC, пробелами, чтобы он стал AA FF 10 DC.

Как это сделать в AutoIt (v3)?

Ответы [ 3 ]

2 голосов
/ 15 мая 2018

Я хотел бы разбить строки байтов & hellip; с пробелами & hellip;

Пример использования StringRegExpReplace():

Global Const $g_sString  = 'AAFF10DC'
Global Const $g_sPattern = '(.{2})'
Global Const $g_sReplace = '$1 '
Global Const $g_sResult  = StringRegExpReplace($g_sString, $g_sPattern, $g_sReplace)

ConsoleWrite($g_sResult & @CRLF)

Возвращает AA FF 10 DC.

1 голос
/ 06 июня 2010
Global $s_string = "AAFF10DC"
MsgBox(64, "Info", _str_bytesep($s_string))

Func _str_bytesep($s_str, $s_delim = " ")
    If Not (Mod(StringLen($s_str), 2) = 0) Then Return SetError(1, 0, "")
    Return StringRegExpReplace($s_str, "(..(?!\z))", "$1" & $s_delim & "")
EndFunc

Это просто еще один способ сделать это. Для больших объемов байтовых данных я бы не советовал использовать этот метод.

1 голос
/ 04 июня 2010

Это ужасно, но работает:

$string = "AAFF10DC"

$strArray = StringSplit($string, "") ; No delimiter will separate all chars.

$strResult = ""

If IsEvenNumber($strArray[0]) Then

    For $i = 1 to $strArray[0] Step 2
        $strResult = $strResult & $strArray[$i] & $strArray[$i+1] & " "
    Next

    MsgBox(0, "Result", $strResult)

Else
    MsgBox(0, "Result", "String does not contain an even number of characters.")
EndIf

Func IsEvenNumber($num)
    Return Mod($num, 2) = 0
EndFunc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...