引言:什麼是字符串(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(字符串, 起始位置, 字符數量)
功能: 從指定的起始位置開始,提取指定長度的部分字串。
口訣: MIDdle(中間)需要 3 個資訊:字符串、從哪開始(Start)、取多少字符(Length)。
範例: 假設索引由 1 開始。
字符串:"DATA2024FILE"
MID("DATA2024FILE", 5, 4)
- 起始位置 (5): 第 5 個字符是 '2'。
- 字符數量 (4): 從 '2' 開始取 4 個字符 (2, 0, 2, 4)。
結果: "2024"
🔍 快速複習:子字符串參數
LEFT: 字符串, N (從頭取幾個)
RIGHT: 字符串, N (從尾取幾個)
MID: 字符串, 起始位置, 長度 (從該位置起取幾個)
第二部分重點總結
子字符串函數(LEFT, RIGHT, MID)讓我們能利用索引和長度參數,精確地提取字符串的特定部分。
第三部分:定位資訊與類型轉換
3.1 尋找子字符串的位置
當你面對一段長文字時,可能需要找出某個字符或詞彙從哪裡開始。這在檢查電子郵件地址是否包含 "@" 符號這類任務中非常重要。
函數: POS() 或 FIND()
功能: 返回搜尋字串在目標字串中第一次出現的起始索引(位置編號)。
- 如果找不到該字串,通常會返回 0 或 -1(表示「不存在」)。
範例: 假設索引由 1 開始。
POS("exam@school.com", "@")
尋找 '@'。從頭計算:e(1), x(2), a(3), m(4), @(5)。
結果: 5
範例 2:
POS("computer", "cat")
子字符串 "cat" 不在 "computer" 中。
結果: 0 (或 -1)
3.2 類型轉換(型別轉換 Casting)
在編程中,數字和字符串的儲存方式不同。如果你從表單中讀取數字 123,電腦通常會把它存為字符串 "123"。你無法對字符串進行數學運算(如乘法)。
類型轉換(Type Conversion),或稱為型別轉換(Casting),就是將數據類型從一種轉換為另一種。
A) 字符串轉數字(整數或實數)
函數: INT() 或 VAL()
功能: 將包含數字的字符串轉換為真正的數值,以便進行數學運算。
比喻: 這就像把收據(文字)變成實際的現金(價值)來點算。
範例:
設 AgeString = "17" (以文字形式儲存)
AgeNumber = INT(AgeString) (以數字形式儲存)
現在你可以做 AgeNumber + 1,結果為 18。
B) 數字轉字符串
函數: STR() 或 TO_STRING()
功能: 將數值轉換為字符串。如果你需要將數字與其他文字透過串接連在一起顯示,這個函數就不可或缺。
範例:
設 Score = 95 (以數字形式儲存)
STR(Score) + "%"
結果: "95%"
第三部分重點總結
POS() 幫助我們在文字中定位資料。類型轉換(INT/STR)對於正確處理字串與數學運算的結合至關重要。
第四部分:字符檢查(字符測試)
有時候你需要驗證用戶輸入。例如,如果用戶輸入年齡,你需要檢查他們輸入的是否只有數字,而非字母。
這些函數通常會返回一個布爾值(Boolean)(TRUE 或 FALSE)。
4.1 IS_NUMERIC
功能: 檢查字符串是否僅包含數字 (0-9)。
- 範例:
IS_NUMERIC("2024")返回 TRUE。 - 範例:
IS_NUMERIC("A12")返回 FALSE(因為含有 'A')。
4.2 IS_ALPHA (或 IS_ALPHABETIC)
功能: 檢查字符串是否僅包含字母 (A-Z 和 a-z)。
- 範例:
IS_ALPHA("Hello")返回 TRUE。 - 範例:
IS_ALPHA("Hello!")返回 FALSE(因為含有 '!')。
4.3 IS_ALPHANUMERIC
功能: 檢查字符串是否僅包含字母和數字 (A-Z, a-z, 和 0-9)。常用於用戶名或密碼驗證。
- 範例:
IS_ALPHANUMERIC("User123")返回 TRUE。 - 範例:
IS_ALPHANUMERIC("User 123")返回 FALSE(因為有空格)。
4.4 其他常用檢查(視情況而定)
- IS_LOWER: 檢查是否所有字符均為小寫。
- IS_UPPER: 檢查是否所有字符均為大寫。
👍 你知道嗎?
字符測試是資料驗證(Data Validation)的基礎。如果網站拒絕你的密碼,說它包含非法符號,那就是網站後端正在使用這些字符測試函數,檢查你的輸入是否符合規則!
第四部分重點總結
字符測試函數讓程式能檢查字符串內包含哪些字符(字母、數字或兩者皆有),從而實現有效的資料驗證。
章節總結:重要的字符串處理函數
在溫習時,請備好這份速查指南!
測量: LEN() (長度是多少?)
連接: + 或 & (串接)
提取: LEFT(), RIGHT(), MID() (切割字符串片段)
搜尋: POS() 或 FIND() (字符從哪裡開始?)
轉換: INT() / STR() (文字數字與數學數字之間的轉換)
驗證: IS_NUMERIC(), IS_ALPHA() (檢查內容格式)
你現在已經掌握了程式中處理文字資料所需的全部工具!做得好!