AutoLISP拆分逗号分割的字符串,不使用split-string
时间: 2024-02-20 10:01:07 浏览: 132
要拆分逗号分割的字符串,可以使用 AutoLISP 中的字符串函数和循环语句来实现。
以下是一个示例函数,它将接受一个逗号分隔的字符串作为输入,并将其拆分成一个字符串列表:
```
(defun split-string (str / result temp)
(setq result '())
(setq temp "")
(foreach char (vl-string->list str)
(if (= char ",")
(progn
(setq result (append result (list temp)))
(setq temp ""))
(setq temp (strcat temp (char))))
)
(setq result (append result (list temp)))
result
)
```
该函数首先定义了两个变量:`result` 和 `temp`。`result` 用于存储拆分后的字符串列表,`temp` 用于存储正在构建的当前字符串。
然后,使用 `vl-string->list` 函数将输入字符串转换为字符列表。然后,使用 `foreach` 循环遍历字符列表中的每个字符。
如果当前字符是逗号,则将 `temp` 添加到 `result` 列表中,并将 `temp` 重置为空字符串。否则,将当前字符附加到 `temp` 中。
最后,将 `temp` 添加到 `result` 列表中,并返回结果列表。
相关问题
AutoLISP拆分逗号分割的字符串
在 AutoLISP 中,可以使用 `split-string` 函数将一个字符串按照指定的分隔符进行拆分。以下是一个示例代码,可以拆分逗号分隔的字符串:
```
(setq str "1,2,3,4,5")
(setq lst (split-string str ","))
(foreach item lst
(princ item)
(princ)
)
```
这个代码中,`split-string` 函数将字符串 `"1,2,3,4,5"` 按照逗号 `,` 进行拆分,并将拆分后的结果存储在一个列表 `lst` 中。然后,使用 `foreach` 循环遍历 `lst` 列表,并将每个元素输出到 AutoCAD 命令行窗口中。
如果您的字符串中包含其他的分隔符,可以将分隔符作为 `split-string` 函数的第二个参数进行指定。例如,如果您的字符串中包含空格和逗号两种分隔符,可以使用以下代码进行拆分:
```
(setq str "1, 2, 3, 4, 5")
(setq lst (split-string str "[, ]+"))
(foreach item lst
(princ item)
(princ)
)
```
这个代码中,`split-string` 函数的第二个参数使用了一个正则表达式 `"[, ]+"`,表示逗号和空格都可以作为分隔符,并且可以出现一次或多次。
阅读全文