如何在Netlogo中解析字符串? [英] How can I parse a string in Netlogo?

查看:15
本文介绍了如何在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 itread-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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆