(DrRacket) 创建学生电子邮件的字符串操作问题
(DrRacket) String manipulation problem creating student emails
当 goose 电子邮件长度小于 9 时,我无法找到 1st name 的字符串部分
(check-expect( goose-mail "becky""anderson"12)"12abecky@uragoose.ca")
在鹅大学,学生根据他们的名字和特殊 ID 获得一个唯一的用户名
数字。用户名以特殊 ID 号开头,后跟他们最后的第一个字母
名字,然后是他们的名字。所有用户名最多限制为
9 个字母,因此通常只包含名字的一部分。全部
用户名是小写的。特殊ID号为小于1000的正整数。
电子邮件地址是附加了“@uragoose.ca”的用户名。
编写一个 Racket 函数 goose-mail,它使用两个非空字符串 first-name,last-name,
和一个非负整数 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) )
我们只需要检查生成的用户名的长度,如有必要,trim 将其调整为所需的大小:
(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))))
当 goose 电子邮件长度小于 9 时,我无法找到 1st name 的字符串部分
(check-expect( goose-mail "becky""anderson"12)"12abecky@uragoose.ca")
在鹅大学,学生根据他们的名字和特殊 ID 获得一个唯一的用户名 数字。用户名以特殊 ID 号开头,后跟他们最后的第一个字母 名字,然后是他们的名字。所有用户名最多限制为 9 个字母,因此通常只包含名字的一部分。全部 用户名是小写的。特殊ID号为小于1000的正整数。 电子邮件地址是附加了“@uragoose.ca”的用户名。 编写一个 Racket 函数 goose-mail,它使用两个非空字符串 first-name,last-name, 和一个非负整数 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) )
我们只需要检查生成的用户名的长度,如有必要,trim 将其调整为所需的大小:
(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))))