- 计算机上的
非数值
处理的对象基本上是字符串
数据。 - 在较早的程序设计中,字符串是作为输入和输出的常量出现的。
- 随着语言加工程序的发展,产生了
字符串处理
,这样,字符串也就作为一种变量类型出现在越来越多的程序设计语言中,同时也产生了一系列字符串的操作。 - 字符串一般简称为
串
。 - 在计算机语言的编译程序中,源程序和目标程序都是
字符串数据
。 - 在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等一般也是作为字符串处理的。又如信息检索系统、文字编译程序、问答系统、自然语言翻译系统以及音乐分析程序等,都是以字符串数据作为处理对象的。
串的基本概念
串(或字符串),是由零个或多个字符组成的有限序列。一般记为:
s='a1a2...an' (n≥0)
- 其中s是串的名字,用单引号括起来的字符序列是串的值,串中字符的个数n称为串的长度。
- 零个字符的串称为
空串
,通常用符号“∅
”来表示,它的长度为零。 - 串中任意个连续的字符组成的子序列称为该串的
子串
。包含子串的串相应地称为主串。通常称字符在序列中序号为字符位置。 - 子串在主串中的位置则以子串的第一个字符在主串中的位置来表示,称为子串位置。
- 例:a=‘cheng’,b=‘du’,c=‘chengdu’,d='cheng du’串长分别为5、2、7、8,且a、b都是c、d的子串。a在c和d中的位置都是1,而b在c中的位置是6,在d中的位置则是7。
- 称两个串是相等的,当且仅当这两个串的值相等,即只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等。
- 在我们描述串时,要求串的值必须用一对单引号括起来,但
单引号
本身不属于串,它的作用只是为了避免与变量名或常量混淆而已。
串的基本操作
串的基本操作串的逻辑结构和线性表很相似,区别仅在于串的数据对象约束为字符集
,而线性表的数据对象则不限。但是,串的基本操作和线性表有很多差别。在线性表的基本操作中,大多数以“单个元素
”作为操作对象,例如在线性表中删除一个元素,在指定位置插入一个元素,或查找表中的某个元素等。而在串的基本操作中,通常针对某个子串
进行操作,例如查找某个子串,在串的某个位置插入一个子串或删除一个子串等。
(1)串复制——将某个串复制给当前串;
(2)判空——判断当前串是否为空,若当前串为空串,则返回true,否则返回false;
(3)串比较——判断当前串与指定串。若相等,返回0;若当前串<指定串, 返回-1;若当前串>指定串,返回1;
(4)求串长——返回当前串的字符个数;
(5)串连接——将串S1和S2连接成一个新串,并赋值给串T;
(6)求子串——返回当前串的第i个字符开始的长达k个字符的子串;
(7)子串定位——输出子串在当前串中首次出现的位置;
(8)串替换——用子串x替换当前串中的子串y;
(9)插入子串——将子串插到当前串中的某个位置;
(10)删除子串——从当前串中删除指定子串;
(11)大写转小写——将当前串中的所有大写字母全部转化为对应小写字符;(12)小写转大写——将当前串中的所有小写字母全部转化为对应大写字符;(13)串压缩——将当前串中首部和尾部的所有空格删除。