AHK从变量中删除每个第二个字符

时间:2018-03-23 11:18:01

标签: string autohotkey

我需要AHK上的代码

我的变量看起来像这样:

CYOMYACHOAYJGUGRYYQNYB

我需要得到这个:

YMAHAJURYNB

我知道,我需要变量中的每一个字符。提前谢谢

4 个答案:

答案 0 :(得分:2)

Var := "CYOMYACHOAYJGUGRYYQNYB"

Loop, Parse, Var              ; retrieves each character from the variable, one at a time
{
    If (Mod(A_Index, 2) = 0)  ; If A_Index is even (the remainder after division by 2 is 0)
        NewVar .= A_LoopField ; add the retrieved character to the new variable
}
MsgBox %NewVar%

答案 1 :(得分:1)

这对我有用。我正在使用一点点来确定StrSplit(TestString)给我的字母数组的索引是偶数还是奇数,因为我循环它们。我将此forum帖子用于按位逻辑。然后我连接线是否均匀。因此,当数字为偶数时,if index&1=0将为真,因此每隔其他字母都会使用此行NewString连接到NewString=%NewString%%letter%。通过删除;,可以随意取消注释消息框行,以便更好地了解循环如何解析数组。

TestString := "ABCD"
word_array := StrSplit(TestString)
NewString:=""
For index, letter in word_array{
    if index&1=0
    {
        ;MsgBox, %letter% added
        NewString=%NewString%%letter%
        ;Msgbox, %NewString%
    }
}
MsgBox, %NewString%

答案 2 :(得分:0)

由于您没有指定任何语言,我将以伪代码回答:

set counter to 1
set result to empty string
for every char in string:
  if counter is even:
    append char to result
  increment counter by 1

答案 3 :(得分:0)

user3419297打败了我,但我的更容易:

InputBox, x, What Variable?, Enter Variable:
loop, % StrLen(x)
        If mod(A_Index,2)=0
            y.=substr(x,A_Index,1)
msgbox %y%
Clipboard := y

您在对话框中输入变量,结果显示,并放入剪贴板。 HTH,

编辑:我喜欢Zack Tarr的按位逻辑!替换上面的“if”:

        If A_Index&1=0

其余的都一样。