字符串是一组用引号括起来的字符。在带引号的字符串中,反斜杠 (\) 字符允许包含控制字符(或转义代码)。 在 AutoLISP 中显式使用带引号的字符串时,该值称为文本字符串或字符串常量。 有效字符串的示例包括“string 1”和“\nEnter first point:”。 AutoLISP 提供了许多用于处理字符串值的函数。以下是一些最常用的功能:
转换字符串的大小写字符串的字母字符可以使用该函数转换为大写或小写。它接受两个参数:一个字符串和一个可选参数,用于指定返回字符的大小写。如果省略可选的第二个参数,则计算结果为并返回转换为大写的字符。strcasenilstrcase (strcase "This is a TEST.") "THIS IS A TEST." 如果提供 的第二个参数 ,则字符将以小写形式返回。T (strcase "This is a TEST." T) "this is a test." 注意:当函数返回或排除 True/False 值时,预定义变量通常用于表示 True 值。在这些情况下,值用于表示 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 来完成的。然后用于指定子字符串的第一个字符及其长度。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. |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 14:36
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.