| 操作 | Java | Groovy |
| 截取子串 | str.substring(1,3) → "bc" (端點排除、易越界) | str[1..2] → "bc" (含端點、直觀) |
| 任意字符提取 | 循環/Stream 處理 | str[1,3,5] → "bdf" |
| 遍歷字符 | for(char c: str.toCharArray()) | str.each { print it + ',' } |
| 包含判斷 | str.contains("d") | str.contains('d') (同) |
| 移除子串 | str.substring(0,5) 或 replace() | str - 'fg' → "abcde" |
| 移除不存在子串 | 返回原串/需判斷 | str - 'st' → 原串 "abcdefg" (安全) |
核心語法糖
- 下標訪問:
str[index] 返回單字符字符串;str[range] 返回子串。
- 多下標列表:
str[i1, i2, ...] 拼接指定位置字符。
- 運算符重載:
- 移除首次出現的子串 (不存在無報錯);+ 拼接;* 重複。
- 集合方法直用:
each/collect/find/findAll/every/any 等 GDK 擴展方法直接作用於 String。
實戰範例
def s = 'abcdefg'
assert s[1..2] == 'bc'
assert s[1,3,5] == 'bdf'
assert s.contains('d')
assert (s - 'fg') == 'abcde'
assert (s - 'ab') == 'cdefg'
assert (s - 'st') == 'abcdefg' // 無異常
s.each { print "$it," } // a,b,c,d,e,f,g,
為什麼這樣設計?
Groovy 將 **String 視為字符序列集合**,統一集合操作體驗。減少 API 記憶負擔,代碼更接近自然語言表達,極大提升開發效率與可讀性。
- 上一篇文章: 2008 年五大必學 Java 技術:OSGi、JCR、GWT、Groovy、雲計算
- 下一篇文章: Spring 2.5 TestContext 框架:基於註解的整合測試新範式
Copyright ©
程式碼之家 All Rights Reserved