内容正文:
项目六 探究文本字符的处理
— 字符串的操作
01
02
03
理解文本字符编辑处理对应的字符串操作有哪些,是如何实现。
了解文本字符可以实现文本字符的编辑、实现文本的查找以及模拟实现文本函数的功能。
学习目标
分析字符串是怎么存储的,并能完成存储。
01
问题导入
导入
日常学习和工作中,电子表格等办公软件能方便地对文本字符进行如插入、删除、查找等编辑和处理(图 3-12)。这些文本字符的操作是如何实现的呢?
文本字符如学生的姓名、性别等,在计算机世界中对应于字符串数据。字符串是非数值计算问题所要处理的主要对象之一,在文本编辑等方面使用非常广泛。
图 3-12 学生信息表
1. 实现文本字符的编辑
用户在输入文本字符时,会发生漏输或多输,这时需要对输入的文本进行编辑修改,如插入或删除字符。使用文档处理软件进行编辑修改的操作很简单,只要定位光标,直接删除和插入即可,那么这些操作对于开发者来说是如何通过编程实现的呢?
输入文本数据时,假设用数组存放一串文本字符,即字符串,实际上就是对数组进行赋值操作,如图 3-13 所示为存储学生信息表中学生李婷的昵称“Audney” 的数组 s(以下都以存储单元加数组下标的形式表示)。该字符串中有 6 个字符,称其长度为 6。
1. 实现文本字符的编辑
若输入时,“Audney”错输成“Audneey”,多输了一个字母“e”,要在“Audneey”中删除这个“e”的过程如图 3-14、图 3-15 所示。
讨论
1. 如果插入和删除的是多个字符的字符串,该如何处理?
2. 使用链表如何实现字符串的存储和删除?
假设漏输了字母 d,则在“Auney”中插入字符“d”的过程如图 3-16 所示。
2. 实现文本的查找
假设要在电子表格软件中,查找姓名为“Gu,Xiao Wen”的学生。可以使用软件自带的查找功能,如图 3-17 所示。
看似简单的查找操作,编程实现时,需要对字符串进行匹配,即使用字符串的比较操作。例如,英文“Gu,XiaoWen”“Gu,Xiao Mei”比较是否相等的比较过程如图 3-18所示。
6.3 画出比较两个字符串 s 和 t 的算法流程图,尝试完成下述代码,理解每一条语句的作用,并上机实践。
活 动
s=[ ' G ' , ' u ' , ' , ' , ' X ' , ' i ' , ' a ' , ' o ' , ' ' , ' W ' , ' e ' , ' n ' ] # 定义字符串 s 列表
t= [ ' G ' , ' u ' , ' , ' , ' X ' , ' i ' , ' a ' , ' o ' , ' ',
' M ' , ' e ' , ' i ' ] # 定义字符串 t 列表
n=len(s)
m=len(t)
i=0
j=0
while (i<n and j<m):
if(__________):
print(" 字符串 s 小于字符串 t")
break
else:
if(__________):
print(" 字符串 s 大于字符串 t")
break
i=i+1
j=j+1
if(____________________):
print (" 字符串 s 等于字符串 t")
电子表格软件还提供了许多函数,如图 3-19 所示,方便用户快速处理文本数据,如合并、截取字符串等。
3. 模拟实现文本函数的功能
图 3-19 文本函数
假设要把某学生的英文名和昵称合并在一起,可以使用软件提供的函数 TEXT,也可以使用“&”连接符;要截取英文名中的姓可以使用函数 MID。这些函数分别对应于字符串的连接操作和截取子串操作。
例如,英文名 s=“Cheng,Fei”,昵称 t=“Adam”,将英文名与昵称合并即 s+t 为“Cheng,Fei Adam”。实现过程如图3-20 所示。
若要在英文名“Cheng,Fei”中截取姓,即第 1 个位置开始截取 5 个字符,具体操作实现如图 3-21 所示。
活 动
6.4 画出将 t 字符串合并到 s 字符串的算法流程图,尝试完成下述代码,并理解每一条语句的作用。
s=[ ' ' ]*14 # 定义 s 列表空间
n=9
for j in range(0,n): #s 列表赋值
s[j]= input(" 输入一个字符 :")
t=[ ' A ' , ' d ' , '