加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读