ClojureDocs

名称空间

clojure.string

Clojure String utilities

It is poor form to (:use clojure.string). Instead, use require
with :as to specify a prefix, e.g.

(ns your.namespace.here
  (:require [clojure.string :as str]))

Design notes for clojure.string:

1. Strings are objects (as opposed to sequences). As such, the
   string being manipulated is the first argument to a function;
   passing nil will result in a NullPointerException unless
   documented otherwise. If you want sequence-y behavior instead,
   use a sequence.

2. Functions are generally not lazy, and call straight to host
   methods where those are available and efficient.

3. Functions take advantage of String implementation details to
   write high-performing loop/recurs instead of using higher-order
   functions. (This is not idiomatic in general-purpose application
   code.)

4. When a function is documented to accept a string argument, it
   will take any implementation of the correct *interface* on the
   host platform. In Java, this is CharSequence, which is more
   general than String. In ordinary usage you will almost always
   pass concrete strings. If you are doing something unusual,
   e.g. passing a mutable implementation of CharSequence, then
   thread-safety is your responsibility.

提供大多数标准字符串处理和处理函数
这是在任何通用编程语言中所期望的。

在 Clojure 和 ClojureScript 中,字符串使用原生
平台实现进行表示,并可直接处理,
例如 (.toLowerCase "FOO") ;=> "foo"clojure.string 名称空间
让你能够以惯用方式处理字符串
(clojure.string/lower-case "FOO") ;=> "foo".

需要记住的一点是这些大多数(所有?)函数将
要作用于的字符串作为第一个参数,非常适合
单画眉运算符 (->) 一起使用
,就像在这个刻意设计的示例中

(require '[clojure.string :as str])

(-> " .LIRpa ni yAD dloc thgIrb a sAw Ti "
str/reverse
str/trim
str/lower-case
(str/replace #“\s+” " ")
str/capitalize)

;;=> “It was a bright cold day in april”

clojure.string 中的变量

b

blank?
如果 s 为 nil、空或仅包含空格,则为 True。

c

capitalize
将字符串的首字符转为大写,其他字符转为小写。

e

ends-with?
如果 s 以子字符串 substr 结尾,则为 True。
escape
使用 cmap 来转义 s 中的每个字符 ch, 返回一个新的字符串,方式如下:如果 (cmap ch) 为 nil,则将 ch 添加到新字符串。如果 (cmap ch) 为非 nil,则添加 (str (cmap ch))。

i

includes?
如果 s 包含子字符串 substr,则为 True。
index-of
返回 s 中 value(字符串或字符) 的索引,可以从 from-index 开始可选地向前搜索。如果未找到 value,则返回 nil。

j

join
使用可选的分隔符,返回 coll 中所有元素(由 (seq coll) 返回)组成的字符串。

l

last-index-of
返回 s 中 value(字符串或字符)的最后一个索引,可以从 from-index 开始可选地向后搜索。如果未找到 value,则返回 nil。
lower-case
将字符串全部转为小写。

r

re-quote-replacement
给定一个你希望将其作为 replace 或 replace-first 中模式匹配的文字替换的替换字符串,请对替换中的特殊字符执行必需的转义。
replace
替换 s 中匹配内容的全部实例。match/replacement 可以是:字符串/字符串字符/模式/(字符串或匹配功能)。另请参见 replace-first。对于以上除模式/字符串之外的所有情况,替换将为文字(即不特殊对待其任何字符)。对于模式/字符串,替换字符串中的 $1、$2 等将替换为与模式中相应的括号组相匹配的字符串。如果您希望您的替换字符串 r 被用于文字,请使用 (re-quote-replacement r) 作为替换参数。另请参见 java.util.regex.Matcher 的 appendReplacement 方法的文档。示例: (clojure.string/replace "Almost Pig Latin" #"\b(\w)(\w+)\b" "$2$1ay") -> "lmostAay igPay atinLay"
replace-first
替换 s 中匹配内容的第一个实例。match/replacement 可以是:字符/字符串字符/模式/(字符串或匹配功能)。另请参见 replace。对于以上除模式/字符串之外的所有情况,替换将为文字(即不特殊对待其任何字符)。对于模式/字符串,替换字符串中的 $1、$2 等将替换为与模式中相应的括号组相匹配的字符串。如果您希望您的替换字符串 r 被用于文字,请使用 (re-quote-replacement r) 作为替换参数。另请参见 java.util.regex.Matcher 的 appendReplacement 方法的文档。示例: (clojure.string/replace-first "swap first two words" #"(\w+)(\s+)(\w+)" "$3$2$1") -> "first swap two words"
reverse
返回其字符顺序相反的 s。

s

split
根据正则表达式拆分字符串。可选参数 limit 为最大拆分数。不惰性。返回包含各个拆分部分的 vector。不返回尾随的空字符串 - 传递 -1 作为 limit 可返回全部内容。
split-lines
根据 \n 或 \r\n 拆分 s。不返回尾随的空行。
starts-with?
如果 s 以 substr 开头,则返回 True。

t

trim
删除字符串两端的空格。
trim-newline
从字符串中删除所有尾随换行符 \n 或回车符 \r。类似于 Perl 中的 chomp。
triml
删除字符串左侧的空格。
trimr
删除字符串右侧的空格。

u

upper-case
将字符串转换为全部大写。