Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在clojure中创建具有可变空格数的字符串_Clojure - Fatal编程技术网

在clojure中创建具有可变空格数的字符串

在clojure中创建具有可变空格数的字符串,clojure,Clojure,我在clojure中创建字符串时遇到问题,我需要根据字符串变量之一-book的长度插入一系列空格 (defn blanks [book] (let [ x(count book)] (cond (= "4" x) " " (= "5" x) " " (= "6" x ) " " ))) (defn Key1 [x date book bookid] (cond

我在clojure中创建字符串时遇到问题,我需要根据字符串变量之一-book的长度插入一系列空格

(defn blanks [book]
    (let [ x(count book)]
    (cond 
            (= "4" x) "    "
            (= "5" x) "     "
            (= "6" x ) "      "
)))

(defn Key1 [x date book bookid]
    (cond 
            (= "AB.LN.TUV" x) (str date".                  AB.LN.  TUV. JKL.      FOO.           FOO.   GRAVITY.       "book".book."(str (blanks book)) bookid)
            (= "DEF.NY.ZXY" x) (str date". DEF.NY. ZXY. JKL.     .          .QPR.             "book".  POS.        "book"."bookid)
            (= "DEF.LN.TUV" x ) (str date".                DEF.LN.  TUV. JKL.      FOO.           FOO.   GRAVITY.       "book".book."blanks bookid)
))



(defn ShowSelectedParams [& props] 
    (let [
              entity "AB.LN.TUV"


              book "ABCD"
              date "21030823"
              bookid "1234abcd"
              ]

              (Key1 entity date book bookid)
))
但是,这将返回以下内容,不带空格:

“21030823.AB.LN.TUV.JKL.FOO.FOO.GRAVITY.abc.book.1234abc

我想得到的是:

“21030823.AB.LN.TUV.JKL.FOO.FOO.GRAVITY.abc.*强文本*book.1234abc”


非常感谢您的帮助

这是为了让它更地道一点

我对格式应用了更标准的clojure样式,根据计数生成空格数,而不是对字符串进行硬编码,并用case语句替换重复的相等性检查

(defn blanks
  [book]
  (apply str (repeat (count book) \space)))


(defn Key1
  [x date book bookid]
  (case x
    "AB.LN.TUV" (str date
                     ".AB.LN.TUV.JKL.FOO.FOO.GRAVITY."
                     book ".book."
                     (blanks book)
                     bookid)
    "DEF.NY.ZXY" (str date
                      ".DEF.NY.ZXY.JKL...QPR."
                      book
                      ".POS."
                      book
                      "."
                      bookid)
    "DEF.LN.TUV" (str date
                      ".DEF.LN.TUV.JKL.FOO.FOO.GRAVITY."
                      book
                      ".book."
                      blanks
                      bookid)))

(defn ShowSelectedParams
  [& props] 
  (let [entity "AB.LN.TUV"
        book "ABCD"
        date "21030823"
        bookid "1234abcd"]
    (Key1 entity date book bookid)))

没关系,我刚刚意识到我有条件检查字符串而不是数字!啊!!如果有人知道一种更接近clojuresqu的方法,我会非常感兴趣。我认为这仍然是不对的,例如,在第三种情况的结果字符串中放置函数空格可能是一个错误。