字符串操作
大家好,所以我有Lisp程序,我正试图修改。下面的代码是其中的一个片段。现在,我有一个对话框(dcl),当您从下拉列表中选择时,它会填充一个列表,其中包含该文件夹中的幻灯片名称,并删除。sld。这很好,但我还需要它来删除幻灯片名称中的前22个字符。每张幻灯片都以一个19个字符的ID开头,后跟一个空格,文字描述和描述的长度各不相同。
幻灯片名称示例:1234-5678-9101-2345–书面描述(长度不同)
所以在我的列表中,它应该只显示:书面描述(长度不同)
我也在寻找相反的结果。我有另一个部分,其中有一个带标签的方框列,我需要该文本仅为幻灯片名称的前19个字符。
所以我的标签应该是这样的,使用上面相同的示例:1234-5678-9101-2345
任何帮助都将不胜感激。
(defun subcat_action (val)
(if (/= val nil)
(progn
(if
(setq blklst
(vl-directory-files
(strcat projectpath-sub "\\"(nth (read (get_tile "subcat")) subcatlst)"\\") "*.sld"))
(progn
(setq blkstmp ())
(foreach n blklst (setq blkstmp (append blkstmp (list (vl-string-right-trim ".sld" n)))))
(mode_tile "blknm" 0)
(start_list "blknm")
(mapcar 'add_list blkstmp)
(end_list)
(set_tile "blknm" "0")
(setq val3 "0")
(blknm_action "0")
)
(progn
(setq blkstmp (list " No Details found ! "))
(start_list "blknm")
(mapcar 'add_list blkstmp)
(end_list)
)))))
(substr n 1 19)和
(substr n 23)应分别为您提供幻灯片名称和描述。 如果“-”的位置是可变的,您可以使用以下方法找到它:
注:substr是基于一的(第一个字符是索引1),vl字符串搜索是基于零的。 5
6
(编辑:太慢)
这看起来很好,很有道理。我只是不知道如何合并到现有代码中。这不是我的原始代码。我正在修改别人的。我不想把它弄糟。
页:
[1]