代码之家  ›  专栏  ›  技术社区  ›  lesderid

如何每两个字符插入一个空格?

  •  1
  • lesderid  · 技术社区  · 16 年前

    例如,我想拆分字节字符串 AAFF10DC ,有空格,所以它变成 AA FF 10 DC .

    如何在autoit(v3)中执行此操作?

    3 回复  |  直到 8 年前
        1
  •  1
  •   JohnForDummies    16 年前

    这有点难看,但它起作用:

    $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
    
        2
  •  2
  •   user4157124 Marko Jesus Narvaez Sarco    8 年前

    我想用空格分割字节字符串…

    实例使用 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 .

        3
  •  1
  •   SmOke_N    16 年前
    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

    只是另一种方式。对于大量的字节数据,我不建议使用这种方法。