Cylis0509 发表于 2022-7-5 17:00:50

字符串操作

大家好,
 
所以我有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)
      )))))

tombu 发表于 2022-7-5 17:29:27

(substr n 1 19)和
(substr n 23)应分别为您提供幻灯片名称和描述。

Roy_043 发表于 2022-7-5 17:34:52

如果“-”的位置是可变的,您可以使用以下方法找到它:
注:substr是基于一的(第一个字符是索引1),vl字符串搜索是基于零的。

Lee Mac 发表于 2022-7-5 17:49:56

5
6
 
(编辑:太慢)

Cylis0509 发表于 2022-7-5 18:02:45

 
这看起来很好,很有道理。我只是不知道如何合并到现有代码中。这不是我的原始代码。我正在修改别人的。我不想把它弄糟。
页: [1]
查看完整版本: 字符串操作