如何在Netlogo中解析字符串? [英] How can I parse a string in Netlogo?
本文介绍了如何在Netlogo中解析字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
上下文
对于我的模型,我希望有一个输入,用户可以在其中输入一系列值。
例如
我希望从上面显示的输入中获得一个包含五个数字的列表,例如[0.5 0.2 0 0.2 0.5]
,这样我就可以使用它们输入的数字进行一些计算。
问题
不幸的是,如果我将类型设置为字符串,类似上述设置的输入将输出"0.5 0.2 0 0.2 0.5"
。如果我将类型设置为数字,则只允许输入单个数字。
那么,我如何才能将字符串解析为空格的基础(即";";)?我也对其他选择持开放态度,尽管我更喜欢将其保存在Netlogo中(例如,不读取值的文本文件),以便更容易更改,因为我怀疑这是一个会被玩弄的东西。
我尝试的内容
我试过使用read-from-string
,但它也不喜欢像上面这样输入的一系列数字。我还尝试使用字符串扩展(https://github.com/NetLogo/String-Extension)中的explode
函数,但我的Net徽标版本(6.2.0)不喜欢该扩展中的API,不允许我使用它。
我是NetLogo的新手,如果我的问题很愚蠢或者我没有说清楚,我很抱歉!
推荐答案
根据the docs on it,read-from-string
可以解析文字值列表。您遇到的问题是,根据the Constant Lists section of the Programming Guide,NetLogo列表文本必须使用方括号来打开和关闭。因此,您需要做的就是将[
和]
添加到您的用户输入中。
to test
let s "0.5 0.2 0 0.2 0.5"
let l read-from-string (word "[" s "]")
show l
show item 2 l
end
输出:
observer> test
observer: [0.5 0.2 0 0.2 0.5]
observer: 0
但我要提醒的是,用户可以很容易地以不同的格式输入数字,如0, 2, 3, 5.0
,并使用逗号分隔值。检查转换是否实际工作是明智的,因为您从失败的read-from-string
中得到的错误消息可能对模型用户没有帮助。
这篇关于如何在Netlogo中解析字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文