引言:什么是字符串(String)?为什么它很重要?

各位未来的程序员,大家好!欢迎来到字符串处理(String Handling)章节。别担心这个名字听起来很复杂,其实你们每天都在使用字符串!

在计算机科学中,字符串(String)就是一串字符序列。它可以是一个词("Hello")、一个句子("Computer Science is great!")、一个密码,甚至是存储为文本的电话号码。任何非纯数学数值的数据,通常都会被视为字符串处理。

本章将教你各种实用工具,让你学会如何操作切割连接转换检查这些字符序列。掌握字符串处理至关重要,因为几乎所有的程序都需要处理文本输入!


第一部分:基础知识——长度与连接

1.1 理解字符串结构(索引 Indexing)

试想象字符串就像一排置物柜。每个字符都存放在自己的柜子里,而每个柜子都有一个特定的地址,称为索引(Index)

• 索引就是字符在字符串中的位置编号。
重要提示:根据编程语言的不同,索引通常由位置 0(零)或位置 1(一)开始。应考时,请务必留意题目给出的背景,但逻辑原理是一样的。

示例字符串:"APPLE"

如果索引由 1 开始:
P1: A, P2: P, P3: P, P4: L, P5: E

1.2 找出字符串的长度

处理字符串的第一步,就是知道它的长度。

函数: LENGTH()LEN()

功能: 计算字符串中的总字符数,包括空格、标点符号和特殊字符。

示例:
LEN("AQA Exam")
计算字符:A, Q, A, (空格), E, x, a, m。
结果: 8

1.3 连接字符串(拼接 Concatenation)

拼接(Concatenation)是指将两个或多个字符串首尾相接,组合成一个更长的字符串的过程。

使用的运算符: 通常是加号(+)或连字号(&)。

比喻: 拼接就像把两节火车车厢连接在一起。

示例:
FirstName = "Alex"
LastName = "Smith"
FullName = FirstName + " " + LastName
结果: "Alex Smith"

⚠ 常见错误警示!

如果你拼接两个包含数字的字符串(例如 "2""5"),结果会是 "25",而不是数学相加后的 7。拼接只会把它们当作文本合起来!

第一部分重点总结

我们使用 LEN() 来测量长度,并使用拼接(Concatenation)(如 + 或 &)来连接字符串。


第二部分:子字符串操作(切割与截取)

很多时候,你只需要长字符串中的一小部分(例如日期中的年份,或是姓名的首字母)。我们使用子字符串(Substring)函数来达成目的。

子字符串(Substring)就是较长字符串中的一部分。

2.1 从左侧提取

函数: LEFT(字符串, 字符数量)

功能: 从字符串的最开头(左侧)开始,取出指定数量的字符。

示例:
LEFT("Programmer", 4)
从 'P' 开始取出 4 个字符(P, r, o, g)。
结果: "Prog"

2.2 从右侧提取

函数: RIGHT(字符串, 字符数量)

功能: 从字符串的最结尾(右侧)开始,取出指定数量的字符。

示例:
RIGHT("Computer Science", 7)
从右向左数 7 个字符:S, c, i, e, n, c, e。
结果: "Science"

2.3 从中间提取

函数: MID(字符串, 起始位置, 字符数量)SUBSTRING(字符串, 起始位置, 字符数量)

功能: 从指定的起始位置开始,提取指定长度的部分字符串。

示例: 假设索引由 1 开始。
字符串:"DATA2024FILE"

MID("DATA2024FILE", 5, 4)

1. 起始位置 (5): 第 5 个字符是 '2'。
2. 字符数量 (4): 从 '2' 开始取 4 个字符 (2, 0, 2, 4)。

结果: "2024"

🔍 快速复习:子字符串参数

LEFT: 字符串, N (从头取几个)
RIGHT: 字符串, N (从尾取几个)
MID: 字符串, 起始位置, 长度 (从该位置起取几个)

第二部分重点总结

子字符串函数(LEFT, RIGHT, MID)让我们能利用索引和长度参数,精确地提取字符串的特定部分。


第三部分:定位信息与类型转换

3.1 寻找子字符串的位置

当你面对一段字符串时,可能需要找出某个特定字符或序列从哪里开始。这在检查电子邮件地址是否包含 "@" 符号这类任务中非常重要。

函数: POSITION()POS() / FIND()

功能: 返回搜索字符或子字符串在目标字符串中第一次出现的起始索引(位置编号)。

示例: 假设索引由 1 开始。
POS("exam@school.com", "@")
从头计算:e(1), x(2), a(3), m(4), @(5)。
结果: 5

3.2 字符串转换操作(类型转换 Casting)

在编程中,数值和字符串的存储方式不同。你无法对文本进行数学运算。OxfordAQA 要求你掌握四种关键转换:

A) 字符串转整数

函数: STRING_TO_INT()INT()
功能: 将包含整数的字符串转换为整数。
示例: INT("42") 求值为整数值 42

B) 字符串转实数

函数: STRING_TO_REAL()REAL() / FLOAT()
功能: 将包含小数的字符串转换为实数/浮点数。
示例: REAL("3.14") 求值为实数值 3.14

C) 整数转字符串

函数: INT_TO_STRING()STR()
功能: 将整数转换为字符串形式,以便与文本进行拼接。
示例: STR(95) + "%" 求值为 "95%"

D) 实数转字符串

函数: REAL_TO_STRING()STR()
功能: 将实数(小数)转换为字符串。
示例: "Total: $" + STR(19.99) 求值为 "Total: $19.99"


第四部分:字符编码转换

计算机使用 ASCIIUnicode 等字符集将每个字符存储为数字编码。你需要知道如何在字符与其底层字符编码之间进行转换。

4.1 字符转字符编码

函数: ASC()CHAR_TO_CODE()ord()

功能: 接收单个字符并返回其数字字符编码(例如其 ASCII 整数值)。

示例:
在 ASCII 中,大写字母 'A' 由数字 65 表示。
ASC("A") 求值为 65
ASC("a") 求值为 97

4.2 字符编码转字符

函数: CHR()CODE_TO_CHAR()chr()

功能: 接收数字字符编码并返回对应的字符。

示例:
CHR(65) 求值为 "A"
CHR(66) 求值为 "B"

👍 字符编码小贴士

在字符与字符编码之间进行转换,在密码学(如凯撒密码 Caesar cipher)以及比较字母顺序时特别有用!


章节总结:重要的字符串处理函数

在复习时,请备好这份速查指南!

长度: LEN(str) / LENGTH(str) —— 返回字符数量。
位置: POS(str, substr) —— 返回子字符串的索引位置。
子字符串: LEFT(str, n)RIGHT(str, n)MID(str, start, len) —— 提取文本片段。
拼接: +& —— 将字符串首尾相接。
字符转编码: ASC(char) / CHAR_TO_CODE(char) —— 将字符转换为其整数编码(例如 'A' → 65)。
编码转字符: CHR(code) / CODE_TO_CHAR(code) —— 将字符编码转换为字符(例如 65 → 'A')。
字符串转换: INT()REAL()STR() —— 在字符串、整数与实数之间进行转换。

你现在已经掌握了 OxfordAQA IGCSE 计算机科学所需的全部字符串处理操作!