Chapter 9. 函式 (四):字串處理 › 9.3 尋找與取代字串
9.3 尋找與取代字串
在 Google Sheets 中與字串尋找與取代相關之函式如下:
- FIND / SEARCH:尋找特定的字出現在字串的哪個位置
語法 | |
輸入 |
|
輸出 | 搜尋文字 從第 開始搜尋 個字元起算,第一次出現在 搜尋 的位置,若找不到會輸出 #VALUE!。其中 FIND 會區分大小寫、SEARCH 則不區分。 |
- REPLACE:取代特定位置的字串
語法 | REPLACE (文字, 位置, 長度, 新文字) |
輸入 |
|
輸出 | 文字 的第 位置 起算 長度 個字被取代成 新文字 的結果。 |
FIND / SEARCH / REPLACE 和字串的長度有關,因此也有使用 Bytes 計算的函式,即 FINDB / SEARCHB / REPLACEB,其函式輸入與輸出完全相同。
- SUBSTITUTE:將某字串取代為某字串
語法 | SUBSTITUTE (搜尋文字, 搜尋, 取代目標, [出現次數]) |
輸入 |
|
輸出 | 搜尋文字 的 搜尋 被取代為 取代目標 的結果,會區分大小寫。 |
接下來將繼續使用已命名範圍「ptt看板範例」,搭配三個基本的範例及一個進階範例說明上述函式的用法:
- 取得 baseball 出現在 ptt看板範例 的位置
公式
=SEARCH("baseball",ptt看板範例)
解說
- 若使用 FIND 會輸出 #VALUE!,因為 FIND 會區分大小寫。
- 此公式會輸出 1,若指定 開始搜尋 為任一個大於 1 的數,則會輸出第二次出現的位置 (即 24),但若 開始搜尋 大於 24 則會輸出 #VALUE!。
- 將 ptt看板範例 的第 10~13 個字取代為 XXX
公式
=REPLACE(ptt看板範例,10,4,"XXX")
解說
在 REPLACE 中選擇第 10~13 個字的方式與 MID 相同,輸出起始位置及字串長度,字串長度則為 13-10+1=4。
- 將 ptt看板範例中棒球皆更改成籃球,中英文都修改
公式
=SUBSTITUTE(SUBSTITUTE(ptt看板範例,"Baseball","Basketball"),"棒球","籃球")
解說
在此使用兩次 SUBSTITUTE 完成,分別取代英文、中文字串。
- 將 ptt看板範例 的人氣 (即 2607) 取代為 XXX
公式
- =REPLACE(ptt看板範例,FIND(" ",ptt看板範例)+1,FIND(" ",ptt看板範例,FIND(" ",ptt看板範例)+1)-FIND(" ",ptt看板範例)-1,"XXX")
- =SUBSTITUTE(ptt看板範例,MID(ptt看板範例,FIND(" ",ptt看板範例)+1,FIND(" ",ptt看板範例,FIND(" ",ptt看板範例)+1)-FIND(" ",ptt看板範例)-1),"XXX")
解說
上述公式看起來很複雜,以下分成幾個步驟說明:
- 將人氣取代成 XXX:可以使用以下兩種方式完成:
- =REPLACE(ptt看板範例,人氣起始位置,人氣的長度,"XXX")
- =SUBSTITUTE(ptt看板範例,人氣,"XXX"),其中 人氣 可以使用 MID(ptt看板範例,人氣起始位置,人氣的長度) 完成。
- 人氣起始位置:已知 ptt看板範例 的結構為「英文名稱 人氣 其他內容」,因此人氣的起始位置為「第一個空格的位置 + 1」,因此可使用 FIND(" ",ptt看板範例)+1。
- 人氣的長度:長度為「第二個空格的位置 − 第一個空格的位置 − 1」,其中第二個空格所在的位置可使用 FIND 並將 開始搜尋 設「第一個空格的位置 + 1」即可。因此可使用 FIND(" ",ptt看板範例,FIND(" ",ptt看板範例)+ 1)-FIND(" ",ptt看板範例)-1。
- 將人氣的起始位置、人氣的長度回填到公式中即可。
上述公式看起來相當複雜,但掌握這些函式的精髓後,便能將字串內容中進行一番整理並靈活運用,第 9.5 節也會使用這些函式進一步拆解其他 ptt 的看板。