关于变量内换行结果的问题
本帖最后由 jun470 于 2024-3-5 15:37 编辑半路出家写的程序,现在遇到了点问题,上来请教一下,搜索过换行相关帖子,为找到想要的结果。发帖来问问大家。
下面程序是提取到一组数据,目前用最土的办法,提取一个输出一个,加空格和换行。但是像要把整个结果整合起来就不懂问题出在哪里,麻烦高手们帮忙看看,或者有其他方法,不用strcat。
测试程序:
(defun c:Q ( / lst lshh lsSS zhenghe)
(setq lst '(("424" "437" "436" "435") ("429" "425" "426" "434") ("430" "428" "427" "433")
("422" "431" "439" "432")))
(SETQ zhenghe "")
(repeat (length lst) ;循环次数=行数
(setq lshh (car lst));取第一个
(print);换行
(repeat (length lshh);循环次数=列数
(setq lsSS (car lshh));取第一个
(prinC lsSS) (prinC " ");输出屏幕,计划要这样的格式在一个变量中
(setq zhenghe (strcat zhenghe " " lsSS));合并字符串,加空格分隔
(setq lshh (cdrlshh));去掉第一个
)
(setq zhenghe (strcat zhenghe "
"));增加换行(换行符按住Alt 输入10),目前不行
(setq lst(cdrlst));去掉第一个
)
(print)
(print zhenghe);;输出屏幕,计划要输出像上面的格式,让数据以上面的格式进剪贴板
(princ))代码潦草,阅读感受不好见谅哈!
本帖最后由 ssyfeng 于 2024-3-5 16:09 编辑
换行用\n就可以了
试试这个:
(defun c:q (/ lst)
(setq lst '(
("424" "437" "436" "435")
("429" "425" "426" "434")
("430" "428" "427" "433")
("422" "431" "439" "432")
)
)
(princ "\n")
(mapcar (function (lambda (x)
(mapcar (function (lambda (y)
(princ y)
(princ " ")
)
)
x
)
(princ "\n")
)
)
lst
)
(princ)
)
本帖最后由 夏生生 于 2024-3-5 16:53 编辑
没蛮看懂题意,按理解写了一下
(defun c:tt(/ rr lst str key)
(defun rr(lst Key / Str)
(setq str (apply 'strcat
(mapcar '(lambda (x) (strcat x key))
(reverse (cdr (reverse lst))))))
(strcat str (last lst) "\n"))
(setq lst '(("424" "437" "436" "435")
("429" "425" "426" "434")
("430" "428" "427" "433")
("422" "431" "439" "432")))
(princ "\n")
(foreach n lst (princ (rr n " ")))
(princ))
无聊,再补充一个格式化的
(defun c:tt(/ a i lst p q x)
(setq lst '(("4204" "437" "436" "435")
("429" "421115" "426" "434")
("430" "42008" "427" "433")
("422" "431" "43639" "4032"))
a (mapcar '(lambda (x) (apply 'max (mapcar 'strlen x)))
(apply 'mapcar (cons 'list lst))))
(princ "\n")
(foreach nlst
(setq i 0)
(foreach mn
(setq p (strlen m)
q (nth i a))
(if(and (= i 0) (= p q))
(princ m)
(if (= i 0)
(progn (repeat (- q p) (princ " ")) (princ m))
(progn (repeat (1+ (- q p)) (princ " "))
(princ m))))
(setq i (1+ i)))
(princ "\n"))
(princ))
这个叫格式化输出,用 \n 控制回车,\t 控制对齐 就可以。 yxp 发表于 2024-3-5 16:05
这个叫格式化输出,用 \n 控制回车,\t 控制对齐 就可以。
\t 控制对齐什么意思?
ssyfeng 发表于 2024-3-5 15:57
换行用\n就可以了
试试这个:
谢谢指教,\n赋值给变量和打印不一样 树櫴希德 发表于 2024-3-5 17:47
\t 控制对齐什么意思?
\t 约等于是 Tab 键,制表符 yxp 发表于 2024-3-5 16:05
这个叫格式化输出,用 \n 控制回车,\t 控制对齐 就可以。
感谢指教,确实用这样就行了 ssyfeng 发表于 2024-3-5 15:57
换行用\n就可以了
试试这个:
感谢指教,我试出来了 jun470 发表于 2024-3-5 22:12
\t 约等于是 Tab 键,制表符
在输出成文本文件时候怎么用呢?
页:
[1]
2