【问题标题】:Remove the 11. value of string if exists11. 如果存在则删除字符串的值
【发布时间】:2015-08-07 17:06:30
【问题描述】:

我有以下格式的字符串:

示例 1:ABC,0,ABCD,ABC,ABC,ABC,ABC,ABC,11,ABC,ABC,toRemove,012,234

示例 2:ABC,0,ABCD,ABC,ABC,ABC,ABC,ABC,11,ABC,ABC, toRemove,012,234

如果字符串包含用逗号分隔的 14 个值(而不是 13 个值),则删除 12.值

上面的第二行包含一个空格,如果存在也应该删除。

【问题讨论】:

  • AutoIt 有在分隔符上分割字符串的功能吗?这似乎是比正则表达式更好的方法。
  • 是的,有可能:autoitscript.com/autoit3/docs/functions/StringSplit.htm 我认为这是个好主意 :) 谢谢

标签: regex string autoit


【解决方案1】:

StringSplit已经有一个计数器(元素0),所以不需要使用Ubound)。

就像StringSplit 将字符串转换为数组一样,ArrayToString 将数组转换回字符串。

#include <array.au3>
$tmp_line = "ABC,0,ABCD,ABC,ABC,ABC,ABC,ABC,11,ABC,ABC, ToRemove,012,234"
$line = StringSplit($tmp_line, ",")
If $line[0] = 14 Then
 $new_line = ArrayToString($line, ",", 1, 11) & "," & ArrayToString($line, ",", 13)
Else
 $new_line = $line  ; shouldn't this be $new_line = $tmp_line ?
EndIf
MsgBox(0, $line[0], $tmp_line & @CRLF & $new_line)

【讨论】:

    【解决方案2】:

    已解决:

    $line = StringSplit($tmp_line, ",")

    $count_values = Ubound($line)

    If $count_values = 14 Then
     $new_line = $line[1] & "," & $line[2] & "," & $line[3] & "," & $line[4] & "," & $line[5] & "," & $line[6] & "," & $line[7] & "," & $line[8] & "," & $line[9] & "," & $line[10] & "," & $line[12] & "," & $line[13]
    Else
     $new_line = $line
    EndIf
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多