CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于字符串和字符串处理(AutoLISP)

2023-1-6 13:37| 发布者: admin| 查看: 1962| 评论: 0|来自: AutoCAD

摘要: 字符串是用引号括起来的一组字符。在带引号的字符串中,反斜杠 (\) 字符允许包含控制字符(或转义代码)。

字符串是用引号括起来的一组字符。在带引号的字符串中,反斜杠 (\) 字符允许包含控制字符(或转义代码)。

在 AutoLISP 中显式使用带引号的字符串时,该值称为文本字符串或字符串常量。

有效字符串的示例包括“字符串 1”和“\n输入第一个点:”。

AutoLISP 提供了许多用于处理字符串值的函数。以下是一些最常用的函数:

  • strcat– 返回一个字符串,该字符串是多个字符串的串联。
  • strcase– 返回一个字符串,其中所有字母字符都已转换为大写或小写。
  • strlen– 返回一个整数,该整数是字符串中的字符数。
  • substr– 返回字符串的子字符串。
  • vl-string-search– 在字符串中搜索指定的模式。
  • vl-string-subst– 在一个字符串中将一个字符串替换为另一个字符串。

转换字符串的大小写

字符串的字母字符可以使用函数转换为大写或小写。它接受两个参数:一个字符串和一个指定返回字符大小写的可选参数。如果省略可选的第二个参数,它将计算 to并返回转换为大写的字符。strcasenilstrcase

(strcase "This is a TEST.")
"THIS IS A TEST."

如果提供第二个参数,则字符将作为小写返回。T

(strcase "This is a TEST." T)
"this is a test."
注意:预定义变量通常用于在函数返回或排除 True/False 值时表示 True 值。在这些条件下,Avalue 用于表示 False 值。Tnil

合并多个字符串

您可以使用函数将多个字符串组合成单个字符串值。这对于在常量字符串(如图形中的错误消息或注释)中放置变量字符串非常有用。下面的代码示例将变量设置为字符串值,然后用于在另外两个字符串之间插入该字符串。strcatstrcat

(setq str "BIG")
(setq bigstr (strcat "This is a " str " test."))
"This is a BIG test."

返回字符串的子字符串

该函数允许您返回字符串的一部分。此函数需要两个参数,并且有一个可选参数。第一个参数是一个字符串,第二个参数是一个整数,表示要作为子字符串返回的字符串的起始字符。如果未提供第三个参数,则返回所有字符,包括指定的开始字符和之后的字符。substrsubstr

(substr "Welcome to AutoLISP" 12)
"AutoLISP"

如果要返回位于提供给函数的字符串的开头或中间的子字符串,可以为第三个参数指定一个整数,该参数表示应返回的字符数。例如,以下示例代码返回所提供字符串的前 7 个字符:substr

(substr "Welcome to AutoLISP" 1 7)
"Welcome"

通常,在处理字符串时,您可能不知道它有多长,但可能知道要返回的子字符串的起始位置。该函数返回字符串中的字符数(包括空格)。strlen

(setq filnam "bigfile.txt")
(strlen filnam)
11

下面的示例代码返回文件名中除最后四个字符(句点和三个字母的扩展名)之外的所有字符。这是通过使用获取字符串的长度并从该值中减去 4 来完成的。thenis 用于指定子字符串的第一个字符及其长度。strlensubstr

(setq newlen (- (strlen filnam) 4))
7

(substr filnam 1 newlen)
"bigfile"

如果您不需要其他函数存储在变量中的字符串长度,则可以将前面的两行代码合并为一行代码。newlen

(substr filnam 1 (- (strlen filnam) 4))
"bigfile"

查找和替换字符串中的文本

查找和替换文本有助于更新注释或部件号。该函数允许您在字符串中定位模式,并将起始位置作为指定模式的第一个实例的整数返回。如果函数返回一个整数,则可以将其用作另一个搜索的起始位置,以确保字符串中没有多个模式实例。vl-string-search

该函数可用于替换字符串中的文本。与函数类似,它只能识别指定模式的第一个实例。您可以在替换文本字符串后使用该函数来查看返回的字符串中是否包含模式的另一个实例。vl-string-substvl-string-searchvl-string-searchvl-string-subst

下面的代码示例查找并替换字符串中的文本 [WIDTH]。

(setq note "All door openings are [WIDTH] unless otherwise noted.")
"All door openings are [WIDTH] unless otherwise noted."

(setq position (vl-string-search "[WIDTH]" note))
22

(setq revised-note (vl-string-subst "36\"" "[WIDTH]" note position))
"All door openings are 36\" unless otherwise noted."

(prompt revised-note)(princ)
All door openings are 36" unless otherwise noted.

路过

雷人

握手

鲜花

鸡蛋

最新评论

python对CAD二次开发

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-7 10:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部