Clojure:
提取子字符串

How to:

Clojure里提取子字符串很直接。用subs函数就行:

;; 截取一个字符串的一部分
(def original-string "Clojure欢迎你")

;; 从索引2开始,提取到索引8(不包括8)
(def extracted-substring (subs original-string 2 8))

(println extracted-substring) ;; 输出: ojure欢

记住,索引是从0开始的。

Deep Dive

提取子字符串这个操作其实有很长的历史。大多语言提供这功能。在Clojure中,subs是基于Java的substring,这保证了高性能。实际上,当你用subs时,Clojure底层直接调用了Java的方法。

其他选择,比如用正则表达式做更复杂的提取,也是可行的:

;; 使用正则表达式提取子字符串
(def original-string "Find #clojure in this string")
(re-find #"(?<=#)\w+" original-string) ;; 输出: "clojure"

提取子字符串时,尤其注意边界条件。比如下标越界,会产生错误。

See Also