首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造一个输入到网络标识方程中的字符串

如何构造一个输入到网络标识方程中的字符串
EN

Stack Overflow用户
提问于 2017-07-26 12:41:59
回答 1查看 168关注 0票数 0

我需要解析字符串才能从列表中获得值。假设我有三个列表,L-效用,g-效用,grp-效用。这些列表中的每一个都包含代理的本地、全局和组级别属性的值。我希望用户输入效用随时间变化的公式,例如更改方程可以是L1 + L3*L4/G3。为了计算这个字符串,L1应该是l-实用程序的第1项,L3是l-实用程序的第3项,G3是g-实用程序列表的第3项。请指导我如何做这件事。解析此字符串后,我可以使用result进行计算。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-26 15:23:13

这是一个棘手的问题,这里有一种方法应该有效,但相当不灵活。最重要的是,它依赖于字符串空格(“")来解析字符串输入中的不同单元,因此您的输入格式必须是"L1 + G2 + GRP3"- -您不能在字母和数字之间缺少空格或额外的空格。

代码语言:javascript
复制
globals [ L-utility G-utility GRP-utility calc-val ]

to setup
  ca
  reset-ticks
  set L-utility [ 1 2 3 4 5]
  set G-utility [ 40 50 60 70 80 ]
  set GRP-utility [ 777 889 999 1111 2222 ]

end

to splitstring-calc 

  let tokens.list []
  let to.parse string-input
  let built.string "" 

  let full.len length to.parse
  let shortened length remove " " to.parse
  let space.count full.len - shortened
  let token.count ( space.count + 1 )
  let items.list ( range 0 token.count )
  let substart 0
  let subend position " " string-input

  foreach ( range 0 token.count ) [ 
    i ->
    ifelse position " " to.parse != false [
      set subend position " " to.parse
    ]
    [
      set subend length to.parse
    ]
    let cur.token substring to.parse substart subend
    set tokens.list lput ( remove " " cur.token ) tokens.list
    set to.parse substring to.parse ( subend ) ( length to.parse )
    if length to.parse > 0 and item 0 to.parse = " " [
      set to.parse remove-item 0 to.parse
    ]      
  ]

  foreach tokens.list [
    i -> 
    ifelse member? i "+ - / * ( ) " [
      set built.string ( word built.string " " i " " )
    ]
    [
      let l.name substring i 0 (length i - 1)
      let l.num last i
      set built.string ( word built.string " item " l.num " " l.name "-utility " )
    ]
  ]

  set built.string remove-item 0 built.string
  print built.string
  set calc-val run-result built.string    

end

然后,您可以使用"string“类型的输入框来编写您的公式,它应该可以工作:

注意,如果您想要添加比我更多的操作符,应该可以将它们添加到"+ - / * ( )"字符串中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45327325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档