如何在clojure中拆分字符串而不是正则表达式模式
发布时间:2020-12-14 06:03:24 所属栏目:百科 来源:网络整理
导读:clojure和 java中的拆分将正则表达式作为要拆分的参数.但我只是想用普通的char来分裂.传入的字符可能是“|”,“,”,“”等等如何用该字符分割一行? 我需要一些功能,如(split string a-char).并且此功能将以非常高的频率调用,因此需要良好的性能.好的解决方
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"] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |