我正在尝试在 clojure “Hello|World
”中拆分字符串,但是当使用拆分方法“(clojure.string/split x #"|")
”时,我得到了一个奇怪的结果,我得到了这个{{ 1}}。任何人都可以告诉我为什么会这样做以及如何将其拆分以获得"[h e l l o | w o r l d]"
?
答案 0 :(得分:6)
以下是答案:
(str/split "Hello|World" #"|") => ["H" "e" "l" "l" "o" "|" "W" "o" "r" "l" "d"]
(str/split "Hello World" #" ") => ["Hello" "World"]
(str/split "Hello|World" #"\|") => ["Hello" "World"]
在正则表达式中,|
字符是特殊的,需要使用反斜杠\
进行转义。
|
字符是正则表达式中的逻辑运算符,通常用于表示“或”,如“abc | def”:
(str/split "Hello|World" #"e|o") => ["H" "ll" "|W" "rld"]
由于你没有其他东西存在,它似乎被解释为“任何东西或任何东西”,所以它匹配每个角色之间的边界。
See the Java docs了解更多信息。