【问题标题】:Clojure substring with negative index具有负索引的 Clojure 子字符串
【发布时间】:2015-08-13 11:22:07
【问题描述】:

我想实现一个 clojure 函数,它将返回给定字符串中的子字符串, 给定一个字符串

(def mystring "clojurestring")
(subs mystring 0 3)  ;=> "clo"

我希望能够使用负索引来获取从最后一个字符开始的子字符串,即

(subs mystring -13 3) ;=> "clo"

我也觉得

(subs mystring -9 7) ;=> "ure"

clojure中获取子串的格式是 (subs 'string' start end)

start。起始偏移量,负偏移量从字符串末尾开始计算。参数为正数或负数。

end。参数是大于零的整数

到目前为止,我已经尝试过没有任何运气,我不知道这是否可能

有什么建议吗?谢谢!

【问题讨论】:

  • @zero323,我指望你做这个。谢谢!
  • 只是为了锻炼或开发中的字符串操作?如果后者 this 可能感兴趣 - 特别是 slice
  • 你能展示你的尝试吗?
  • 您的问题未指定。第三个参数是子字符串的索引,还是字母数?
  • @verdammelt 我尝试了(subs mystring (- (count mystring) 3)),这是我能想到的解决方案。

标签: clojure


【解决方案1】:

如果 start 是负数,你只是想从字符串的长度中减去。如果我正确理解您的要求:

(defn subs* [s start end]
  (if (neg? start)
    (subs s (+ (.length s) start) end)
    (subs s start end)))

【讨论】:

    【解决方案2】:
    (defn my-subs [st from end]
      (let [f (if (neg? from)
                   (+ (count st) from)
                   from)]
        (subs st f end)))
    
    (my-subs "clojurestring" -9 7)
    ;"ure"
    

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2018-09-22
      • 1970-01-01
      • 2015-01-09
      • 2011-12-03
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多