UP | HOME

字符串

Table of Contents

以前只介绍了 ,因为它们在 Scheme 中最为常用。然而,Scheme也有像 字符字符串符号向量 等的其它数据类型

字符

在某个字符前添加 #\ 来表明它是一个 字符

例如:

#\a 表示字符 a
#\Space 表示 空格
#\Tab 表示 制表符
#\Linefeed 表示 Linefeed
#\Return 表示回车

R5RS 中定义了下面的与字符相关的函数:

  • (char? obj) :如果 obj 是一个 字符 则返回 #t
  • (char=? c1 c3) : 如果 c1c2同一个字符 的话则返回 #t
  • (char->integer c) : 将 c 转化为对应的 整数 (character code)
(char->integer #\a) ;  97
  • (integer->char n) : 将一个 整数 转化为对应的 字符
  • 比较字符:
    • (char<? c1 c2)
    • (char<= c1 c2)
    • (char> c1 c2)
    • (char>= c1 c2)
    实际上是比较的 字符代码的大小

    例如,(char<? c1 c2)等同于(< (char->integer c1) (char->integer c2))
  • (char-ci=? c1 c2)
  • (char-ci<? c1 c2)
  • (char-ci<=? c1 c2)
  • (char-ci>? c1 c2)
  • (char-ci>=? c1 c2)
    这些比较函数对大小写不敏感
  • 这些函数分别用于检测字符 c 是否为 字母数字空白符大写字母小写字母
    • (char-alphabetic? c)
    • (char-numeric? c)
    • (char-whitespace? c)
    • (char-upper-case? c)
    • (char-lower-case? c)
  • 这些函数分别返回字符 c 对应的 大写小写
    • (char-upcase c)
    • (char-downcase c)

字符串

字符串 通过两个 闭合的双引号 表示:

    例如,"abc" 表示字符串 abc

R5RS 定义了下面的函数:

  • (string? s):如果 s 是一个 字符串 则返回 #t
  • (make-string n c) : 返回由 n个 字符 c 组成的 字符串 。参数 c 可选
  • (string-length s) : 返回字符串 s长度
  • (string=? s1 s2) : 如果字符串 s1s2 相同 的话则返回 #t
  • (string-ref s idx) : 返回字符串 s索引idx 的字符(索引从 0 开始计数)
  • (string-set! s idx c) : 将字符串 s索引idx 的字符 设置c
  • (substring s start end) : 返回字符串 sstart 开始到 end - 1 处的 子字符串
(substring "abcdefg" 1 4) ;  "bcd"
  • (string-append s1 s2 …) : 连接 两个字符串 s1s2
  • (string->list s) : 将字符串 s 转换为由 字符构成的表
  • (list->string ls) : 将一个由 字符构成的表 转换为 字符串
  • (string-copy s) : 复制 字符串 s

Next:符号

Previous:赋值

Home:目录