我目前正在寫一個LISP程序,其分析CR結果列表的形式像以下: ( 「I」 0 10 0 20)< <(字X0 X1 Y0 Y1)Common Lisp的串聯和換行符
它必須使用單詞的位置來構建整個文本。 我的代碼有一個聚類分析器,可以找出像左對齊或右對齊或甚至兩者的段落。羣集數據結構如下所示: (「cluster name」xline y0 y1'(cluster words))
如何在我迭代字符串列表並將它們連接到結果字符串中時添加新行從這些創建一個格式化文本? 例子:
"Hi,\n
\n
here is my entry\n
\n
Good bye"
我的代碼看起來如下:
(defun print-formatted-text(txt)
(let
((size (array-total-size txt))
(sorted (sort (sort txt #'compare-mix) #'compare-generic2))
(result ""))
(loop for i from 0 to (1- size) do
(let ((el (aref sorted i)))
(if (word? el)
(setf result (concatenate 'string result (first el) " "))
(if (null (nth 7 el))
nil
(progn
(setf result (concatenate 'string result " "))
(dolist (curr (nth 7 el))
(setf result (concatenate 'string result (first curr) " "))))))))
result))
如果目前的數據是不發一言,那麼它是一個段落。這意味着,我需要添加一個新的行,然後再給出段落的單詞。
在這裏恰當地使用連接嗎?
謝謝你的建議。