Scheme字符串操作和定义过程

时间:2012-09-05 04:43:48

标签: string casting scheme substring

我需要帮助解决这个问题,因为我不知道如何解决这个问题

定义一个过程选择,它接受一个非空字符串s和一个非负整数i,并返回一个长度为1的子字符串,该子字符串由s中索引i处的字符组成。假设我是字符串s的合法索引。

〜(选择" cat" 0)

" C"

〜(选择" cat" 1)

""

〜(选择" cat" 2)

" T"

2 个答案:

答案 0 :(得分:1)

试试这个,使用标准的Scheme程序很简单:

(define (pick str idx)
  (string (string-ref str idx)))

以下是它的工作原理:string-ref返回给定索引处字符串中的字符,string过程将字符转换为长度为1的字符串。

没有必要使用substring程序(因为我们只需要一个字符),但这也是一个有效的选择。

答案 1 :(得分:1)

一种解决方案是使用substring

> (substring "Scheme" 1 3)
"ch"

这里“方案”一词的字母已编号。

  • 字母S的索引为0.
  • 字母c的索引为1。
  • 字母h的索引为2.
  • 字母e的索引为3。
  • 字母m的索引为4.
  • 字母e的索引为5。

表达式(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 ??? ???))

该怎么办?是