2016-05-31 8 views
1

私はこれを持っています。私は記事の本文を解析し、存在するならば、と"bbb13bbb""aaa22aaa""bbb23bbb"などの本文を置換する必要があります。どうすればそれを行うことができますので、RAMも十分に消費されません。正規表現を有効に使用していますか?部分文字列を置き換える方法は?</p> <pre><code>(defn page1 [] (layout/render "index.html" ({:articles (db/get-articles)}))) </code></pre> <p>機能</p> <pre><code>db/get-articles </code></pre> <p>キー本体を持っているオブジェクトのリストを返します。

UPDATE:

私は交換する必要があるパターンは次のとおりです。 "[何か=" X "何か他のもの/]"。ここで、Xは数字であり、未知数です。私はXを変更する必要があります。 置き換えるパターンがたくさんあります。

答えて

4

私は早すぎる最適化に時間を費やすことはなく、単純な解が機能するかどうかを最初に評価します。記事の内容がどれほど大きいか分かりませんが、問題ではないはずです。

あなたが本当に最適化する必要があることが判明した場合は、データストレージから記事の内容をストリーミングして手動で置き換えるか、streamflyerのようなライブラリを使用して、コンテンツをHTTP応答ストリームに送信します。このような

-1

正規表現は、Clojureの中で素晴らしい作品:replace/replace-first:私はちょうどJavaのString.replaceまたはString.replaceAllまたはclojure.string機能を使用することになり

(ns clj.core 
    (:use tupelo.core) 
    (:require 
    [clojure.string :as str] 
    ) 

(spyx (str/replace "xyz-aaa12aaa-def" #"aaa12aaa" "bbb13bbb")) 

;=> (str/replace "xyz-aaa12aaa-def" #"aaa12aaa" "bbb13bbb") => "xyz-bbb13bbb-def" 
+1

また、 "計算"(inc 12)を行うことができます: '(clajure.string/replace" xyz-aaa12aaa-def "#"(aaa)(\ d \ d)(aaa) " (整数/ parseInt n)) ")b)bbb"() – cfrick

2

何かが十分高速である必要があります:

(mapv 
    (fn [{:keys [body] :as m}] 
    (assoc m :body 
      (reduce-kv 
       (fn [body re repl] 
       (string/replace body re repl)) 
       body 
       {"aaa12aaa" "bbb13bbb", 
       "aaa22aaa" "bbb23bbb"}))) 
    [{:body "xy aaa12aaa fo aaa22aaa"}]) 

あなたがreplace-firstreplaceを置き換えることができたら、文字列のみが発生することを保証することができます。

関連する問題