8

我创建了一个函数来检查我的第一个字符串是否以第二个字符串结尾。

在 Java 中,我们有现成的方法来检查这一点,但在 Clojure 中我找不到这样的方法,所以我编写了自定义函数,如下所示:

(defn endWithFun [arg1 arg2] 
    (= (subs arg1 (- (count arg1) (count arg2)) (count arg1)) arg2))

输出:

> (endWithFun "swapnil" "nil")
true
> (endWithFun "swapnil" "nilu")
false

这按预期工作。

我想知道,有没有类似的选择?同样在我的情况下,我区分大小写。我也想忽略区分大小写。

4

2 回答 2

14

endsWith您可以直接在 Clojure中访问本机 Java :

(.endsWith "swapnil" "nil")

有关更多详细信息,请参见http://clojure.org/java_interop 。

然后,您可以自然地组合它以获得不区分大小写:

(.endsWith (clojure.string/lower-case "sWapNIL") "nil")
于 2013-07-30T03:52:16.737 回答
5

Clojure 1.8在clojure.stringends-with?中引入了一个函数,所以现在有一个原生函数:

> (ends-with? "swapnil" "nil")
true
> (ends-with? "swapnil" "nilu")
false

同样,lower-case如果您想要不区分大小写,只需应用即可。

于 2016-01-21T16:50:39.687 回答