【发布时间】:2018-09-02 01:27:21
【问题描述】:
我需要 AHK 的代码
我有一个看起来像这样的变量:
CYOMYACHOAYJGUGRYYQNYB
我需要得到这个:
YMAHAJURYNB
我是说,我需要一个变量中的每一秒字符。提前致谢
【问题讨论】:
-
请在标签中指定语言
标签: string autohotkey
我需要 AHK 的代码
我有一个看起来像这样的变量:
CYOMYACHOAYJGUGRYYQNYB
我需要得到这个:
YMAHAJURYNB
我是说,我需要一个变量中的每一秒字符。提前致谢
【问题讨论】:
标签: string autohotkey
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%
【讨论】:
这对我有用。我正在使用逐位来确定StrSplit(TestString) 给我的字母数组的索引在我循环遍历它们时是偶数还是奇数。我将这个forum 帖子用于按位逻辑。然后我连接如果线是偶数。因此,当数字为偶数时,if index&1=0 将为真,因此我可以将所有其他字母与此行 NewString=%NewString%%letter% 连接到 NewString。随意通过删除; 来取消注释消息框行,以更好地了解循环如何解析数组。
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%
【讨论】:
由于您没有指定任何语言,我将用伪代码回答:
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
【讨论】:
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
您在对话框中输入变量,结果显示出来,并放入剪贴板。嗯,
编辑:我喜欢 Zack Tarr 的按位逻辑!替换上面的“如果”:
If A_Index&1=0
其余的都一样。
【讨论】: