当鹅电子邮件长度小于 9 时,我无法找到第一个名字的字符串部分
(check-expect( goose-mail "becky""anderson"12)"12abecky@uragoose.ca")
在鹅大学,学生会根据他们的名字和一个特殊的ID获得一个唯一的用户名 数。用户名以特殊 ID 号开头,后跟最后一个字母的第一个字母 名称,然后是他们的名字。所有用户名限制为最大 9个字母,因此通常只包含名字的一部分。所有 用户名为小写。特殊 ID 号是小于 1000 的正整数。这 电子邮件地址是附加了"@uragoose.ca"的用户名。 编写一个 Racket 函数鹅邮件,该函数消耗两个非空字符串名字、姓氏、 和一个非负整数 ID-num,其中 0 ≤ ID-num ≤ 999 并生成 具有指定的名字和姓氏以及身份证号码的学生。名字和姓氏是 以小写形式提供。> 到目前为止,我所拥有的是
(check-expect(1st-last-name-letter "pham")"p")
(define(1st-last-name-letter L)
(substring L 0 1))
(check-expect(ID-num 12)"12")
(define (ID-num ID)
(number->string ID))
(check-expect(user-name "andrew" "pham" 123)"123pandrew")
(define(user-name first-name last-name ID)
(string-append (string-append(ID-num ID)(1st-last-name-letter last-name))
first-name) )
我们只需要检查结果用户名的长度,并在必要时将其修剪为所需的大小:
(define (user-name first-name last-name ID)
(let ((username (string-append (ID-num ID) (1st-last-name-letter last-name) first-name)))
(if (<= (string-length username) 9)
username
(substring username 0 9))))