野渔 发表于 2017-12-10 14:51:33

getstring一个多行文本,求取文本行数和最长的那一行文本长度。(已解决)

本帖最后由 野渔 于 2017-12-31 10:53 编辑

在LISP中,getstring一个多行文本,求取文本行数和最长的那一行文本长度。
因为水平有限,求助。

野渔 发表于 2017-12-17 21:49:54

在取得行数的同时,应该可以通过下面的方式去计算最长的那一行文本长度,我还不会写这个过程

(vl-string-position (ascii "\\") "atz\\nyazlm\\nnqc")
(vl-string-subst "" "\\n" "atz\\nyazlm\\nnqc")
(vl-string-position (ascii "\\") "atzyazlm\\nnqc")
(vl-string-subst "" "\\n" "atzyazlm\\nnqc")
(strlen "atzyazlmnqc")
得到:3,8,11
最长的字符长度可以算出是5

野渔 发表于 2017-12-10 22:28:27

本帖最后由 野渔 于 2017-12-20 09:59 编辑

(setq mtext-string
                (getstring
                  t
                  "\n输入多行文本,参见提示:"
                )
         )

野渔 发表于 2017-12-31 10:07:31

在新年到来之际,辛苦调试完成了,符合最新国标粗糙度标注要求的LSP。
标注时,指引线(建立一个用于标注粗糙度的引线方式)同步完成,方框(方框本身是不存在的)内标注也是同步输入完成,括号、等号自动添加。

2018年礼物,送给自己!

自贡黄明儒 发表于 2017-12-10 19:35:19

getstring得到的就是字符串,怎么可能是多行文本?

野渔 发表于 2017-12-10 22:32:21

vl-string-search,可以查出多少行,我不会求最长的文本长度。

野渔 发表于 2017-12-10 22:35:16

本帖最后由 野渔 于 2017-12-10 22:54 编辑

我现在只想到,直接生成文本再选取删除,然后求文本宽,这个蠢办法。但我希望先得到最大文本宽后,再在指定位置生成文本。

vectra 发表于 2017-12-11 10:30:11

如果实现困难 考虑是不是把问题想复杂了 能不能换个简单的方式

野渔 发表于 2017-12-13 21:09:13

自提一下,看看

masterlong 发表于 2017-12-14 00:56:59

炸开撒   炸开后再进行处理虽然可能在某些极端的情况下会有问题但我想你应该是自用也没打算编一个完全无bug 的程序吧

野渔 发表于 2017-12-17 21:52:06

希望有热心人能指导下
页: [1] 2
查看完整版本: getstring一个多行文本,求取文本行数和最长的那一行文本长度。(已解决)