【问题标题】:racket/scheme list manipulation球拍/计划列表操作
【发布时间】:2014-12-07 09:38:56
【问题描述】:

我希望从字符串列表中提取某些元素,从字符串“ENTITIES”开始,到字符串“OBJECTS”结束

到目前为止,我有这个给我从字符串 ENTITIES 开始的元素,但没有办法从字符串“OBJECTS”开始删除元素。

(define (test-string2 lst keyword)
  (member (string-upcase keyword) lst))

我也看过for函数,这是我的尝试,但显然不起作用

(define (test-string2 lst keyword)
  (cdr (member (string-upcase keyword) lst)))
;return list that matches keyword

(define (test-string3 lst keyword)
  (if (string=? (car lst) (string-upcase keyword))
      '()
      (begin (car lst)
             (test-string3 (cdr lst) keyword))))
;return elements in list until keyword is matched

(test-string3 (test-string2 list-of-strings "entities") "objects")




> list-of-strings
'("SECTION"
  "  2"
  "ENTITIES"
  "  0"
  "SPLINE"
  "  5"
  "F7"
  "330"
  "1F"
  "100"
  "AcDbEntity"
  "  8"
  "0"
  "  6"
  "Continuous"
  " 62"
  "     5"
  "370"
  "     0"
  "100"
  "AcDbSpline"
  "OBJECTS"
  "3"
  "5"
  "6"
  "6"
  "7"
  "78")

【问题讨论】:

  • 没什么大不了的,我只想要“ENTITIES”和“OBJECTS”之间的元素

标签: scheme racket


【解决方案1】:

在 Racket 中我会使用 for/list:

(define (test-string3 lst keyword1 keyword2)
  (define kw2 (string-upcase keyword2))
  (for/list ((e (in-list (member (string-upcase keyword1) lst)))
             #:break (string=? e kw2))
    e))

然后

> (test-string3 '("a" "b" "ENTITIES" "c" "d" "OBJECTS" "e" "f") "entities" "objects")
'("ENTITIES" "c" "d")

【讨论】:

  • 感谢您向我展示了另一种方法。我也喜欢小王子!
猜你喜欢
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多