引言:什麼是字符串(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)

  1. 起始位置 (5): 第 5 個字符是 '2'。
  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)TRUEFALSE)。

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() (檢查內容格式)

你現在已經掌握了程式中處理文字資料所需的全部工具!做得好!