引言:什麼是字符串(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"。
第四部分:字符編碼轉換
電腦使用 ASCII 或 Unicode 等字符集將每個字符儲存為數字編碼。你需要知道如何在字符與其底層字符編碼之間進行轉換。
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 電腦科學所需的全部字符串處理操作!