【问题标题】:How am I able to extract the value of a variable stored inside another variable?我如何能够提取存储在另一个变量中的变量的值?
【发布时间】:2016-03-09 12:59:39
【问题描述】:
text = "This is a textline"
PlaceHolder = "text"

所以我想获取通过占位符返回的文本的值。但无论我尝试什么,它总是会返回字符串“text”。问题是我事先不知道我需要哪个变量。因此 PlaceHolder 可以在脚本中具有任意数量的变量的名称。这让我知道我需要哪个变量。但是如果我只能将它用作文字字符串,那并不是很有帮助。

我试过了:

% PlaceHolder - 返回文本
%PlaceHolder% - 返回文本
:= PlaceHolder - 返回文本

解释我在做什么
我在 GUI 中有很多 DropDownLists。除了一个之外,所有这些都是隐藏的。根据所做的选择,可见的将显示其他之一。所以我无法知道哪个 DropDownList 会变得可见。但我确实需要那个 DropDownList 的值。

因此,第一个选择的值始终与可见的 DropDownList 的变量名称匹配。但是,这存储为文字字符串。所以即使我现在有了我需要的变量的名称,我也无法访问它的值。希望这一切都有意义。

【问题讨论】:

  • 我的回答向您展示了如何打印存储为文字字符串的变量的值。 "text" 是一个字符串,做一些替换以删除"",并打印变量。
  • @2501 谢谢。我正在研究它,看看我是否可以让它工作。 ofc 会尽快接受您的回答 :)
  • @2501 好吧,我还在纠结它,但你的魔法奏效了。非常感谢! :)

标签: autohotkey


【解决方案1】:

变量 PlaceHolder 包含值 "text",但变量 text 的名称没有引号。因此,请确保变量 PlaceHolder 包含变量的确切名称或删除引号:

StringReplace, PlaceHolder2 , PlaceHolder , `" , , A

然后将这个用百分号括起来的变量赋给一个新变量:

Out := %PlaceHolder2%
Msgbox, %Out%

或者干脆做:

PlaceHolder := text ; note the absence of quotation marks
Msgbox, %Placeholder%

这等同于:

PlaceHolder = %text%
Msgbox, %Placeholder%   

【讨论】:

  • 对不起,我想我应该说得更清楚。引号不存在。我只是把它们放在这里以表明它是一个文字字符串。第二个解决方案对我不起作用,因为我不知道哪个变量名最终会出现在 PlaceHolder 中。所以我不能硬编码它。让我编辑我的问题,以更清楚地说明我在做什么。
  • @icecub 在这种情况下,您将需要从文本中提取每个可能代表变量的单词并进行我所展示的替换..
猜你喜欢
  • 2015-01-09
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多