【问题标题】:How to insert a space every two characters?如何每两个字符插入一个空格?
【发布时间】:2010-06-03 12:46:38
【问题描述】:

我想用空格分割字节串,例如AAFF10DC,所以它变成AA FF 10 DC。

如何在 AutoIt (v3) 中做到这一点?

【问题讨论】:

    标签: string byte spaces autoit


    【解决方案1】:

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

    使用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。

    【讨论】:

      【解决方案2】:

      这有点难看,但它有效:

      $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
      

      【讨论】:

        【解决方案3】:
        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

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

        【讨论】:

          猜你喜欢
          • 2012-05-19
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多