如何在clojure中拆分字符串而不是正则表达式模式

前端之家收集整理的这篇文章主要介绍了如何在clojure中拆分字符串而不是正则表达式模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
clojure和 java中的拆分将正则表达式作为要拆分的参数.但我只是想用普通的char来分裂.传入的字符可能是“|”,“,”,“”等等如何用该字符分割一行?

我需要一些功能,如(split string a-char).并且此功能将以非常高的频率调用,因此需要良好的性能.好的解决方案.

解决方法

只需通过正确转义特殊字符使您的角色成为正则表达式,并使用默认的正则表达式分割(迄今为止速度最快).

此版本将生成一个自动转义其中的每个字符或字符串的正则表达式

(defn char-to-regex
  [c]
  (re-pattern (java.util.regex.Pattern/quote (str c))))

如果版本在regexp的特殊字符范围内,则此版本将生成一个退出单个字符的正则表达式

(defn char-to-regex
  [c]
  (if ((set "<([{\\^-=$!|]})?*+.>") c)
    (re-pattern (str "\\" c))
    (re-pattern c)))

确保绑定正则表达式,因此如果需要进行多次拆分,则不要反复调用char-to-regex

(let [break (char-to-regex \|)]
  (clojure.string/split "This is | the string | to | split" break))
=> ["This is " " the string " " to " " split"]

猜你在找的正则表达式相关文章