我想在发送给谷歌的搜索查询中用加号替换空格字符。
(defn search-google [search-term]
(clojure.string/replace search-term #" " "+")
(browse-url
(str "http://google.ca/search?q=" search-term)))
但是,我的功能失败了,因为我的搜索词保留了空格。
(search-google "clojure user input")
URISyntaxException Illegal character in query at index 32:
http://google.ca/search?q=clojure user input java.net.URI$Parser.fail (:-1)
我是clojure的新手,怀疑我错过了一些显而易见的东西。
正在创建一个新的固定搜索词,然后忽略固定的搜索词,并将未更改的搜索词传递给浏览url:
(def browse-url println)
(defn search-google [search-term]
(let [fixed-search-term (clojure.string/replace search-term #" " "+")]
(browse-url
(str "http://google.ca/search?q=" fixed-search-term))))
user> (search-google "a b c")
http://google.ca/search?q=a+b+c
nil
试试这个:
(defn search-google [search-term]
(browse-url
(str "http://google.ca/search?q="
(clojure.string/replace search-term #"s+" "+"))))
请注意,该模式是一个正则表达式,您可以使用s+
来指示要替换的字符串匹配应该包括一个或多个空格。
还要注意,替换过程返回一个新字符串,原始字符串不会被修改。
Replace不会就地修改search-term
,而是返回它的一个副本,该副本将被丢弃。
使用let
将该值绑定到函数中的名称,并使用该名称调用browse-url
。