(DrRacket)创建学生电子邮件时出现字符串操作问题
当goose电子邮件长度小于9时,我很难找到第一个名字的字符串部分(DrRacket)创建学生电子邮件时出现字符串操作问题,racket,Racket,当goose电子邮件长度小于9时,我很难找到第一个名字的字符串部分 (check-expect( goose-mail "becky""anderson"12)"12abecky@uragoose.ca") 在Goose大学,学生会根据自己的名字和特殊ID获得一个唯一的用户名 数字用户名以特殊ID号开头,后跟其最后一个字母的第一个字母 然后是他们的名字。所有用户名的最大限制为 9个字母,因此通常只包括名字的一部分。所有的 用户名是小写的。特殊ID号是小于1000的正整数。这个 电子邮件地址是附
(check-expect( goose-mail "becky""anderson"12)"12abecky@uragoose.ca")
在Goose大学,学生会根据自己的名字和特殊ID获得一个唯一的用户名
数字用户名以特殊ID号开头,后跟其最后一个字母的第一个字母
然后是他们的名字。所有用户名的最大限制为
9个字母,因此通常只包括名字的一部分。所有的
用户名是小写的。特殊ID号是小于1000的正整数。这个
电子邮件地址是附加有“@uragoose.ca”的用户名。
编写一个Racket函数goosemail,它使用两个非空字符串first name,last name,
和一个非负整数ID num,其中0≤ ID编号≤ 999并生成
具有指定名字和姓氏以及ID号的学生。名字和姓氏为
以小写字母提供。
>
到目前为止,我得到的是
(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))))
嗨,我已经投票取消删除。@WillNess谢谢!那个人看起来好像OP得到了他的答案,不想分享:-我希望我们的两张票就足够了。我会把它标记出来让mod取消删除。