String clojure-在组合字符串和变量时避免额外的空白
我正在编写一个程序,它使用printl str返回汇编语言的命令。我需要在我的代码中使用变量,我遇到了这个问题,函数将在我不需要的地方返回额外的空白:String clojure-在组合字符串和变量时避免额外的空白,string,clojure,println,removing-whitespace,String,Clojure,Println,Removing Whitespace,我正在编写一个程序,它使用printl str返回汇编语言的命令。我需要在我的代码中使用变量,我遇到了这个问题,函数将在我不需要的地方返回额外的空白: (defn pushConstant [constant] (println-str "@" constant "\r\nD=A\r\n@SP\r\nA=M\r\nM=D\r\n@SP\r\nM=M+1")) 其中,假设常数=17,而不是 @17 D=A @SP A=M M=D @SP M=M+1 我有: @ 17 D=A @SP A=
(defn pushConstant [constant]
(println-str "@" constant "\r\nD=A\r\n@SP\r\nA=M\r\nM=D\r\n@SP\r\nM=M+1"))
其中,假设常数=17,而不是
@17
D=A
@SP
A=M
M=D
@SP
M=M+1
我有:
@ 17
D=A
@SP
A=M
M=D
@SP
M=M+1
这对于我的汇编代码来说是有问题的。我有很多这样的问题。我很高兴听到关于如何避免字符串和变量之间出现额外空格的建议。坦率地说,我将实现以下内容:
(defn pushConstant [constant]
(->> [(str "@" constant)
"D=A"
"@SP"
"A=M"
"M=D"
"@SP"
"M=M+1"]
(interpose "\r\n")
(apply str)))
这样,您就不会有一个大的难看的格式字符串,而是将您的操作分解为小的、可读的部分
这就是说,这里对您有影响的部分是
(str“@”constant)
,它将您的@
与参数结合起来,而不添加空格。坦白地说,我将实现它,使其看起来更像以下内容:
(defn pushConstant [constant]
(->> [(str "@" constant)
"D=A"
"@SP"
"A=M"
"M=D"
"@SP"
"M=M+1"]
(interpose "\r\n")
(apply str)))
这样,您就不会有一个大的难看的格式字符串,而是将您的操作分解为小的、可读的部分
这就是说,这里对您有影响的部分是
(str“@”constant)
,它将@
与参数结合起来,而不添加空格。使用str
创建字符串,该字符串只连接(println交错空格):
使用仅串联(println交错空格)的
str
创建字符串:
我将生成并传递汇编指令的列表或序列,直到最后一次可能的时候才处理字符串。更容易处理高级数据结构,而不是需要解析以具有语义意义的字符串缓冲区。我将生成并传递汇编指令的列表或序列,直到最后一次才处理字符串。更容易处理更高级别的数据结构,而不是需要解析以具有语义意义的字符串缓冲区。