从HTTP获取变量并使用AppleScript处理它

时间:2015-02-14 12:46:40

标签: http variables applescript

我从网站上得到这个结果:

Value2:16 Value4:34

可以有多行或只有一行。该值始终用":"分隔。这些值应该在AppleScript中使用,如下所示:

将Value2设置为16 将value4设置为34 ...

这是我到目前为止所做的:

set someText to do shell script "curl http://asdress | textutil -stdin -stdout -format html -convert txt -encoding UTF-8"

set AppleScript's text item delimiters to {":"}
set delimitedList to every text item of someText

如何单独设置变量? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

如果您使用curl模拟echo命令的输出,请执行以下操作:

echo -e "Value2: 16\n Value4: 34"

echo -e "Value2: 16 Value4: 34"

您可以使用grep测试一些过滤。我会选择以下内容:

echo -e "Value2: 16\n Value4: 34" | grep -Ewo "\d+"

将使用Extended Regular Expressions-E),它允许我使用\d+查找一个或多个数字,而-w表示我找到的必须有一个字边界两侧(因此我找不到Value2Value4,而-o表示只输出匹配的部分。

因此,要回答您的问题,我会将您的curl更改为

curl .... | grep -Ewo "\d+"

你将得到输出

16
34

答案 1 :(得分:0)

你不是。使用map / hash / dictionary / associative列表/表结构来存储任意键值对,或者如果你拥有有限数量的已知键,则使用if theKey == "Value1" then \ set Value1 to theValue \ else if theKey == "Value2" then ... etc.,并且由于某些罕见的原因,必须使用单独的变量。

令人沮丧的是,AppleScript没有包含键值数据类型 - 它只有数组(列表)和结构(记录) - 但您可以轻松地滚动自己的快速n-dirty关联列表例程以进行循环{theKey:"...",theValue:"..."}个记录的列表(天真的性能应该高达几十个项目;较大的集合需要更高效的算法)。或者,如果您使用的是10.10+,并且不介意在AppleScript中使用Cocoa,您可以考虑使用NSDictionary,这不是完全理想的,但可以有效地扩展并节省您的编写自己的代码很麻烦。