【问题标题】:AHK Remove every second char from variableAHK 从变量中删除每隔一个字符
【发布时间】:2018-09-02 01:27:21
【问题描述】:

我需要 AHK 的代码

我有一个看起来像这样的变量:

CYOMYACHOAYJGUGRYYQNYB

我需要得到这个:

YMAHAJURYNB

我是说,我需要一个变量中的每一秒字符。提前致谢

【问题讨论】:

  • 请在标签中指定语言

标签: string autohotkey


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

【讨论】:

  • 这可能是最好的方法,但我也想分享我发现的另一种方法。 :D
  • 除非你不需要大括号,在这种情况下。 . .我的答案为变量添加了一个输入框,并将结果保存到剪贴板。
【解决方案2】:

这对我有用。我正在使用逐位来确定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%

【讨论】:

    【解决方案3】:

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

    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
    

    【讨论】:

    • 从未听说过。您能否提供有关该语言的一些信息的链接?
    【解决方案4】:

    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
    

    其余的都一样。

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 1970-01-01
      • 2017-04-15
      • 2017-06-18
      • 1970-01-01
      • 2021-12-08
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多