Browser 如何在Clojure中打印到stdout而不返回nil

Browser 如何在Clojure中打印到stdout而不返回nil,browser,clojure,io,string-formatting,println,Browser,Clojure,Io,String Formatting,Println,我正在制作一个网站,我想知道是否有任何方法可以从一个向量返回一个整数字符串,每个整数都在自己的行中。当我将代码装配为对输出使用apply str时,我可以在浏览器中得到一个从->[1 2 3 4]到->1 2 3 4的东西。但我希望它看起来像这样: 1 2 3 4 . . . 当我尝试使用println、pprint或format在自己的行中获取每个元素时,我在浏览器中的结果标题下为空。我想这是因为所有这些都返回零。是否有某种方法可以获得所需的格式,以便用户不必手动将输出的结果复制并粘贴到e

我正在制作一个网站,我想知道是否有任何方法可以从一个向量返回一个整数字符串,每个整数都在自己的行中。当我将代码装配为对输出使用apply str时,我可以在浏览器中得到一个从->[1 2 3 4]到->1 2 3 4的东西。但我希望它看起来像这样:

1
2
3
4 
.
.
.

当我尝试使用println、pprint或format在自己的行中获取每个元素时,我在浏览器中的结果标题下为空。我想这是因为所有这些都返回零。是否有某种方法可以获得所需的格式,以便用户不必手动将输出的结果复制并粘贴到excel文件中

如果您明确希望输出可由Excel读取的csv数据,我建议您查看以下csv库之一。这些库不仅将格式化数据作为字符串处理,而且还将处理CSV中有关引用的非常棘手的规则

基于某些csv数据获取字符串的示例:

user=> (def data [[1 2] [2 3] [3 4] [4 5]])
#'user/data
user=> (with-out-str (write-csv *out* data))
"1,2\n2,3\n3,4\n4,5\n"
如果您想狭隘地限制您列出的问题,许多方法中的一种方法是在每段数据之间交错一个无限的换行序列:

user=> (def data [1 2 3 4])
#'user/data
user=> (apply str (interleave data (repeat \newline)))
"1\n2\n3\n4\n"

如果您明确希望输出可由Excel读取的csv数据,我建议您查看以下csv库之一。这些库不仅将格式化数据作为字符串处理,而且还将处理CSV中有关引用的非常棘手的规则

基于某些csv数据获取字符串的示例:

user=> (def data [[1 2] [2 3] [3 4] [4 5]])
#'user/data
user=> (with-out-str (write-csv *out* data))
"1,2\n2,3\n3,4\n4,5\n"
如果您想狭隘地限制您列出的问题,许多方法中的一种方法是在每段数据之间交错一个无限的换行序列:

user=> (def data [1 2 3 4])
#'user/data
user=> (apply str (interleave data (repeat \newline)))
"1\n2\n3\n4\n"

我知道了!由于我正在使用hiccup,因此可以执行以下操作:

[:p (interpose [:br]
      (process-grades (clojure.edn/read-string weights) (clojure.edn/read-string grades)))]

并使输出向量中的每个元素在浏览器中各自的行上渲染

我想出来了!由于我正在使用hiccup,因此可以执行以下操作:

[:p (interpose [:br]
      (process-grades (clojure.edn/read-string weights) (clojure.edn/read-string grades)))]

并使输出向量中的每个元素在浏览器中各自的行上渲染

还有clojure.string/join\newline[1 2 3 4]我已经尝试了上面所有的方法,但没有一种有效。clojure.string/join为我提供了与以前相同的输出格式,即使在repl中,每个元素前面都有一个\n。另外两种技术在浏览器中返回一个空白屏幕。我的函数调用是在一个通过hiccup呈现html的函数中:[:p clojure.string/join\newline process grades clojure.edn/read-string weights clojure.edn/read-string grades]@noisesmith join不会添加尾随的换行符,因此我使用了interleave。@Kurofone right-如果您正在构建html,那么您需要交错适当的标记,不是新词。在问题中提及您的呼叫代码可能会有所帮助…谢谢Alex。我对这一切都很陌生,所以我甚至不知道调用代码是什么。如果我的问题不够明确,我深表歉意。还有clojure.string/join\newline[1 2 3 4]我已经尝试了上述所有方法,但都不起作用。clojure.string/join为我提供了与以前相同的输出格式,即使在repl中,每个元素前面都有一个\n。另外两种技术在浏览器中返回一个空白屏幕。我的函数调用是在一个通过hiccup呈现html的函数中:[:p clojure.string/join\newline process grades clojure.edn/read-string weights clojure.edn/read-string grades]@noisesmith join不会添加尾随的换行符,因此我使用了interleave。@Kurofone right-如果您正在构建html,那么您需要交错适当的标记,不是新词。在问题中提及您的呼叫代码可能会有所帮助…谢谢Alex。我对这一切都很陌生,所以我甚至不知道调用代码是什么。如果我的问题不够明确,我向您道歉。您缺少换行符[:br]您缺少换行符[:br]