2014-12-07 89 views
0

我想從一個字符串列表中提取某些元素,從字符串「實體」開始到字符串結尾的「對象」球拍/方案列表操作

到目前爲止,我有這個給我從要素字符串實體向前,但沒有辦法從字符串「OBJECTS」向前移除元素。

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

我也看了對功能,這是我的嘗試,但顯然行不通

(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") 
+0

這並不重要,我只想要「實體」和「對象」之間的元素 – KRC 2014-12-07 09:51:57

回答

1

在拍我會使用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") 
+0

感謝您向我展示了一種替代方法。我也愛小王子! – KRC 2014-12-07 10:34:51

+0

@chiakangren不客氣;-) – uselpa 2014-12-07 10:49:09