我有一个Clojure函数autocomplete
,它带有一个前缀并返回该字符串的可能的autocompletion
。例如,如果输入为abs
,则我得到absolute
作为可能的完整单词。
问题在于该函数对前缀进行大小写不匹配,因此,如果我将Abs
作为前缀输入,我仍然会得到absolute
而不是Absolute
。
获得与输入的原始前缀的大小写匹配的最终字符串完成的正确方法是什么?
因此,可以像这样工作的函数case-match
(case-match "Abs" "absolute") => "Absolute"
答案 0 :(得分:3)
您可以使用前缀字符串作为不区分大小写的搜索结果的前缀。只需使用subs
从搜索结果中删除前缀的长度即可:
(defn case-match [prefix s]
(str prefix (subs s (count prefix))))
(case-match "Abs" "absolute")
=> "Absolute"
这假设您的autocomplete
函数保持独立,并且case-match
将应用于其结果。
答案 1 :(得分:0)
另外,您可以选择startsWith
(defn case-match
[prefix s]
(when (.startsWith (clojure.string/lower-case s)
(clojure.string/lower-case prefix))
s))
(case-match "Abs" "absolute")
#=> "absolute"
(case-match "Absence" "absolute")
#=> nil