明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 371|回复: 11

[基础] 关于变量内换行结果的问题

[复制链接]
发表于 2024-3-5 15:34 | 显示全部楼层 |阅读模式
本帖最后由 jun470 于 2024-3-5 15:37 编辑

      半路出家写的程序,现在遇到了点问题,上来请教一下,搜索过换行相关帖子,为找到想要的结果。发帖来问问大家。

      下面程序是提取到一组数据,目前用最土的办法,提取一个输出一个,加空格和换行。但是像要把整个结果整合起来就不懂问题出在哪里,麻烦高手们帮忙看看,或者有其他方法,不用strcat。



测试程序:
  1. (defun c:Q ( / lst lshh lsSS zhenghe)
  2. (setq lst '(("424" "437" "436" "435") ("429" "425" "426" "434") ("430" "428" "427" "433")
  3. ("422" "431" "439" "432")))
  4. (SETQ zhenghe "")
  5.   (repeat (length lst) ;循环次数=行数
  6.     (setq lshh (car lst));取第一个
  7. (print);换行
  8.          
  9.    (repeat (length lshh);循环次数=列数
  10.      (setq lsSS (car lshh));取第一个
  11.      (prinC lsSS) (prinC " ");输出屏幕,计划要这样的格式在一个变量中

  12.    (setq zhenghe (strcat zhenghe " " lsSS));合并字符串,加空格分隔
  13.      
  14.      (setq lshh (cdr  lshh));去掉第一个
  15.     )
  16.      (setq zhenghe (strcat zhenghe "
  17. "));增加换行(换行符按住Alt 输入10),目前不行

  18. (setq lst(cdr  lst));去掉第一个
  19.    )
  20.   
  21.   (print)
  22.   (print zhenghe);;输出屏幕,计划要输出像上面的格式,让数据以上面的格式进剪贴板


  23. (princ))
代码潦草,阅读感受不好见谅哈!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-3-5 15:57 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-3-5 16:09 编辑

换行用\n就可以了

试试这个:
  1. (defun c:q (/ lst)
  2.   (setq lst '(
  3.                ("424" "437" "436" "435")
  4.                ("429" "425" "426" "434")
  5.                ("430" "428" "427" "433")
  6.                ("422" "431" "439" "432")
  7.              )
  8.   )
  9.   (princ "\n")
  10.   (mapcar (function (lambda (x)
  11.                       (mapcar (function (lambda (y)
  12.                                           (princ y)
  13.                                           (princ " ")
  14.                                         )
  15.                               )
  16.                         x
  17.                       )
  18.                       (princ "\n")
  19.                     )
  20.           )
  21.     lst
  22.   )
  23.   (princ)
  24. )


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 1 反对 0

使用道具 举报

发表于 2024-3-5 16:00 | 显示全部楼层
本帖最后由 夏生生 于 2024-3-5 16:53 编辑

没蛮看懂题意,按理解写了一下
  1. (defun c:tt  (/ rr lst str key)
  2.     (defun rr  (lst Key / Str)
  3.   (setq str (apply 'strcat
  4.        (mapcar '(lambda (x) (strcat x key))
  5.          (reverse (cdr (reverse lst))))))
  6.   (strcat str (last lst) "\n"))
  7.     (setq lst '(("424" "437" "436" "435")
  8.     ("429" "425" "426" "434")
  9.     ("430" "428" "427" "433")
  10.     ("422" "431" "439" "432")))
  11.     (princ "\n")
  12.     (foreach n lst (princ (rr n " ")))
  13.     (princ))

无聊,再补充一个格式化的

  1. (defun c:tt  (/ a i lst p q x)
  2.     (setq lst '(("4204" "437" "436" "435")
  3.     ("429" "421115" "426" "434")
  4.     ("430" "42008" "427" "433")
  5.     ("422" "431" "43639" "4032"))
  6.     a   (mapcar '(lambda (x) (apply 'max (mapcar 'strlen x)))
  7.           (apply 'mapcar (cons 'list lst))))
  8.     (princ "\n")
  9.     (foreach n  lst
  10.   (setq i 0)
  11.   (foreach m  n
  12.       (setq p (strlen m)
  13.       q (nth i a))
  14.       (if  (and (= i 0) (= p q))
  15.     (princ m)
  16.     (if (= i 0)
  17.         (progn (repeat (- q p) (princ " ")) (princ m))
  18.         (progn (repeat (1+ (- q p)) (princ " "))
  19.          (princ m))))
  20.       (setq i (1+ i)))
  21.   (princ "\n"))
  22.     (princ))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-3-5 16:05 | 显示全部楼层
这个叫格式化输出,用 \n 控制回车,\t 控制对齐 就可以。
发表于 2024-3-5 17:47 | 显示全部楼层
yxp 发表于 2024-3-5 16:05
这个叫格式化输出,用 \n 控制回车,\t 控制对齐 就可以。

\t 控制对齐  什么意思?
 楼主| 发表于 2024-3-5 22:09 | 显示全部楼层
ssyfeng 发表于 2024-3-5 15:57
换行用\n就可以了

试试这个:

谢谢指教,\n赋值给变量和打印不一样
 楼主| 发表于 2024-3-5 22:12 | 显示全部楼层
树櫴希德 发表于 2024-3-5 17:47
\t 控制对齐  什么意思?

\t 约等于是 Tab 键,制表符
 楼主| 发表于 2024-3-5 22:13 | 显示全部楼层
yxp 发表于 2024-3-5 16:05
这个叫格式化输出,用 \n 控制回车,\t 控制对齐 就可以。

感谢指教,确实用这样就行了
 楼主| 发表于 2024-3-5 22:14 | 显示全部楼层
ssyfeng 发表于 2024-3-5 15:57
换行用\n就可以了

试试这个:

感谢指教,我试出来了
发表于 2024-3-7 20:10 | 显示全部楼层
jun470 发表于 2024-3-5 22:12
\t 约等于是 Tab 键,制表符

在输出成文本文件时候怎么用呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 13:48 , Processed in 0.260170 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表