Tôi chỉ tự hỏi liệu có chức năng chia chuỗi không? Một cái gì đó như:Chức năng tách chuỗi
> (string-split "19 2.14 + 4.5 2 4.3/- *")
'("19" "2.14" "+" "4.5" "2" "4.3" "/" "-" "*")
Tôi chưa tìm thấy nó và tạo của riêng tôi. Tôi thỉnh thoảng sử dụng Đề án vì vậy tôi sẽ biết ơn nếu bạn sửa chữa và đề xuất giải pháp tốt hơn:
#lang racket
(define expression "19 2.14 + 4.5 2 4.3/- *")
(define (string-split str)
(define (char->string c)
(make-string 1 c))
(define (string-first-char str)
(string-ref str 0))
(define (string-first str)
(char->string (string-ref str 0)))
(define (string-rest str)
(substring str 1 (string-length str)))
(define (string-split-helper str chunk lst)
(cond
[(string=? str "") (reverse (cons chunk lst))]
[else
(cond
[(char=? (string-first-char str) #\space) (string-split-helper (string-rest str) "" (cons chunk lst))]
[else
(string-split-helper (string-rest str) (string-append chunk (string-first str)) lst)]
)
]
)
)
(string-split-helper str "" empty)
)
(string-split expression)
Bạn nên đặt dấu ngoặc đóng cửa của bạn trên cùng một dòng như biểu thức cuối cùng. Đây không phải là C :) – erjiang
Không, nên làm bất cứ điều gì bạn thích. – rightfold