从NetLogoWeb中工作的字符串读取?

从NetLogoWeb中工作的字符串读取?,netlogo,Netlogo,是否有其他方法可以从NetLogoWeb中工作的字符串中读取?我需要从输入字段中提取一个字符串。字符串包含一定数量的整数,应转换为列表。在NetLogo中,我使用以下代码: to-report get-demand report reverse sort read-from-string ( word "[" the-field-name "]") end 然而,NetLogoWeb中似乎还没有实现从字符串读取。有办法吗 非常感谢并致以最良好的祝愿, 米哈尔 另外,非常感谢您开发NetLo

是否有其他方法可以从NetLogoWeb中工作的字符串中读取?我需要从输入字段中提取一个字符串。字符串包含一定数量的整数,应转换为列表。在NetLogo中,我使用以下代码:

to-report get-demand
  report reverse sort read-from-string ( word "[" the-field-name "]")
end
然而,NetLogoWeb中似乎还没有实现从字符串读取。有办法吗

非常感谢并致以最良好的祝愿, 米哈尔


另外,非常感谢您开发NetLogoWeb。我真的很怀念NetLogo插件。

不幸的是,我们还没有添加对从字符串读取NetLogo Web的支持。在不久的将来,它可能也不会出现

这里提供的代码是给您带来问题的真正代码吗?我假设它不是,但是,如果是,你可以这样做以获得相同的效果:

报到 报告反向排序列出字段名 终止

也就是说,如果字段名是它听起来的样子,那么它将是一个只包含某个字段名的字符串


我认为你的真实情况更复杂。如果我看到了真正的代码,我可能能够提供更好的解决方法。您确定不能用解决您的问题吗?

根据前面的答案,该命令不会很快实现,似乎唯一的解决方案是实现一个简单的解析器,例如,类似这样的方法适用于由空格分隔的整数:

to-report string-to-list [ s ]
let l []
let ss ""
let n 0
let mode "out"
repeat length s [
  set ss first s
  set s but-first s
  if ( ( ss = " ") and ( mode = "in" ) ) [
    set mode "out"
    set l lput n l
    set n 0
  ]
  if ( member? ss "0123456789") [ 
    set mode "in"
    set n ( n * 10 ) + ( position ss "0123456789" )
  ]
]
if ( mode = "in" ) [ set l lput n l ]
report l
end
报告器获取字符串s并返回整数列表

或者有没有更简单的方法来实现它?

我建议:

to-report string-to-numbers [s]
  if empty? s [ report [] ]
  if first s = " " [ report string-to-numbers butfirst s ]
  let pos position " " s
  ifelse not is-number? pos
    [ report (list string-to-number s) ]
    [ report fput string-to-number substring s 0 pos
                  string-to-numbers substring s (pos + 1) length s ]
end

to-report string-to-number [s]
  report reduce [10 * ?1 + ?2]
                map [position ? "0123456789"]
                    explode s
end

to-report explode [s]
  report map [item ? s] n-values (length s) [?]
end
样本运行:

observer> show string-to-numbers "12 345 67"
observer: [12 345 67]

我验证了这在桌面NetLogo和NetLogo Web中都有效。

事实上,这是真正的代码。你的解决方案不起作用。由于输入必须是一个字符串,输入了许多数字,用空格分隔,因此代码的结果是一个包含一个字符串的列表:[1 2 3 4 5 6 7 8 9 10 11]请参阅我的答案,了解使用map和reduce的替代方法。非常聪明,但弹性稍差。在我的版本中,坏字符(例如字母)被忽略。在你的版本中,他们抛出错误。不过,我认为这是可以处理的。非常感谢。