CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

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

2023-1-8 13:08| 发布者: admin| 查看: 839| 评论: 0|来自: AutoCAD

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

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

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

有效字符串的示例包括“string 1”和“\nEnter first point:”。

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

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

转换字符串的大小写

字符串的字母字符可以使用该函数转换为大写或小写。它接受两个参数:一个字符串和一个可选参数,用于指定返回字符的大小写。如果省略可选的第二个参数,则计算结果为并返回转换为大写的字符。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.

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 14:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部