Scheme的字符串操作

简介:

字符串操作是任何一门编程语言中最常用的操作之一,scheme也提供了一系列procudure来操作字符串。

1、字符串的比较,有6个,分别是string=?  string>? string<? string>=? string<=?

这与其他语言中对string的比较并无不同,比较字符和长度。

例子:
(string=? "mom" "mom") <graphic> #t
(string<? "mom" "mommy") <graphic> #t
(string>? "Dad" "Dad") <graphic> #f
(string=? "Mom and Dad" "mom and dad") <graphic> #f
(string<? "a" "b" "c") <graphic> #t

注意这些比较操作是大小写敏感。相应的,大小写不敏感的版本:

procedure: (string-ci=? string1 string2 string3 ...)
procedure: (string-ci<? string1 string2 string3 ...)
procedure: (string-ci>? string1 string2 string3 ...)
procedure: (string-ci<=? string1 string2 string3 ...)
procedure: (string-ci>=? string1 string2 string3 ...)

2、从字符构造字符串,使用string过程
(string #\a)  => "a"
(string #\a #\b #\c)  => "abc"

注意,换行字符是#\newline,回车字符是#\return

3、重复N个字符构造字符串
(make-string)  => ""
(make-string 4 #\a)  =>"aaaa")

4、字符串长度 string-length
(string-length "") =>0
(string-length "dennis") => 6

5、取第N个字符,相当于java中的charAt:

(string-ref "hi there" 0) <graphic> #\h
(string-ref "hi there" 5) <graphic> #\e

6、修改字符串的第N个字符:
(string-set! "hello" 0 #\H) => "Hello"

7、拷贝字符串:
(let ((str "abc"))
  (eq? str (string-copy str)))  => #f
(let ((str "abc"))
  (equal? str (string-copy str)))  => #t

8、拼接字符串,string-append
(string-append) => ""
(string-append "abc" "defg") => "abcdefg"

9、截取子串
(substring "hi there" 0 1) <graphic> "h"
(substring "hi there" 3 6) <graphic> "the"
(substring "hi there" 5 5) <graphic> ""

10、填充字符串
(let ((str (string-copy "sleepy")))
  (string-fill! str #\Z)
  str) <graphic> "ZZZZZZ"

11、与list的相互转换

(string->list "") <graphic> ()
(string->list "abc") <graphic> (#\a #\b #\c)

(list->string '()) <graphic> ""
(list->string '(#\a #\b #\c)) <graphic> "abc"
(list->string
  (map char-upcase
       (string->list "abc"))) <graphic> "ABC"

文章转自庄周梦蝶  ,原文发布时间2009-10-12

目录
相关文章
|
算法 Java
从0到1打造正则表达式执行引擎(一) 正则表达式转NFA (1)
重复匹配(正则表达式中的 ? + *) 正则表达式里有4种表示重复的方式,分别是:
98 1
正则表达式 常用正则表达式
一、校验数字的表达式  1 数字:^[0-9]*$  2 n位的数字:^\d{n}$  3 至少n位的数字:^\d{n,}$  4 m-n位的数字:^\d{m,n}$  5 零和非零开头的数字:^(0|[1-9][0-9]*)$  6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$  7 带1-2位小数的正数或负数:^(\-)?\
3926 0
|
数据采集 机器学习/深度学习 移动开发
我学会了,正则表达式
爬虫是**非常的**的强大,相信不少朋友都有所耳闻,它帮助我们更快地“获得”我们所要关键数据。那么,它怎么知道我们要需要什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。
119 0
我学会了,正则表达式
|
8月前
|
自然语言处理
正则表达式1
正则表达式
也谈正则表达式
    其实很早就知道了正则表达式,在集成VBScript脚本的时候,就看到了该功能,不过那时觉得很难,觉得也派不上什么用场,所以也没有过多关注。
482 0
第177天:常用正则表达式(最全)
常用正则表达式 1 2 /* 常用正则表达式大全!(例如:匹配中文、匹配html) 3 4 匹配中文字符的正则表达式: [u4e00-u9fa5] 5 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 6 匹配双字节字符(包括汉字在内):[^x0...
1133 0
|
XML PHP 数据安全/隐私保护
常用的正则表达式
正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。 正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。
194 0
|
JavaScript 前端开发 Java
|
9月前
|
数据采集 前端开发 JavaScript
正则表达式
正则表达式
67 0

热门文章

最新文章