我需要帮助解决这个问题,因为我不知道如何解决这个问题
定义一个过程 pick ,它接受一个非空字符串 s 和一个非负整数 i,并返回一个长度为 1 的子字符串,该子字符串由 s 中索引 i 处的字符组成。假设 i 是字符串 s 的合法索引。
〜(选择“猫”0)
“C”
〜(选择“猫”1)
“一个”
〜(选择“猫”2)
“t”
试试这个,使用标准方案过程很简单:
(define (pick str idx)
(string (string-ref str idx)))
它是这样工作的:string-ref
从给定索引处的字符串中返回一个字符,然后该string
过程将字符转换为长度为 1 的字符串。
没有真正需要使用该substring
过程(因为我们只需要一个字符),但这也是一个有效的替代方案。
一种解决方案是使用substring
.
> (substring "Scheme" 1 3)
"ch"
此处“方案”一词的字母被编号。
该表达式(substring "Scheme" 1 3)
创建一个新字符串,其中的字母编号从 1 到 2。索引 3 是不在新字符串中的第一个索引。
由于您只想选择一个字符,请尝试以下操作:
> (substring "Scheme" 1 2)
"c"
> (substring "Scheme" 2 3)
"h"
现在您可以定义自己的函数:
(define (pick a-string i)
(substring a-string ??? ???))
应该怎么办???是?