从非空字符串(DrRacket)中提取最后一个字符。希望得到帮助

时间:2014-09-14 09:21:52

标签: string scheme racket

我对Scheme很新,我使用DrRacket,我希望得到一些急需的帮助。

我的第一个任务是从非空字符串中提取第一个字符,这是我成功完成的。

;;Signature: string-first: string -> string
;;Purpose: To extract the first character from a non-empty string
;;Tests
  (check-expect (string-first "cookies") "c")
  (check-expect (string-first "party") "p")
;;Definition: string-first
  (define (string-first str)
    (string-ith str 0))

现在,我的任务是从非空字符串中提取最后一个字符。我无法弄清楚这一点。我的猜测是它涉及"字符串长度"与" string-ith组合使用。"

希望有人可以帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:4)

你是在正确的轨道上,假设字符串是非空的,实现就像这样简单:

(define (string-last str)
  (string-ref str (sub1 (string-length str))))

说明:

  • 我使用内置的string-ref程序,我猜测的程序与string-ith的执行方式相同(总是尝试使用现有程序)
  • 字符串的有效索引从零开始,以字符串的长度减去1结束(使用sub1减去一个单位)
  • 因此,找到最后一个字符只需合并string-refstring-length,记住最后一个字符位于索引length-1