XDrxAPI 105 个字符串处理函数帮助手册
1.函数名: xdrx_string->base64
函数别名: xdrx-string-encode
功能说明:
该函数将给定的字符串编码为其 Base64 表示形式,使用自定义的编码函数。
调用格式:
(xdrx_string->base64 <字符串>)
参数说明:
- <字符串>:需要进行 Base64 编码的字符串。
返回值:
- 返回编码后的 Base64 字符串。
注意事项:
1. 该函数使用 `CMyString.Base64EncodeFromCString` 方法进行 Base64 编码。
2. 如果获取字符串参数出错或提供了额外的参数,函数将返回错误。
3. 返回的 Base64 字符串是编码后的输入字符串结果。
使用示例:
(xdrx_string->base64 "Hello, World!")
返回:"SGVsbG8sIFdvcmxkIQ=="
(xdrx_string->base64 "AutoCAD")
返回:"QXV0b0NBRA=="
------------------------------------------------------------
2.
函数名: xdrx_string->format
功能说明:
该函数实现类似 printf 的字符串格式化,将格式字符串中的占位符 %1 ~ %9 替换为提供的参数值。
调用格式:
(xdrx_string->format "<格式字符串>" <参数1> <参数2> ... <参数9>)
参数说明:
- <格式字符串>:包含占位符 %1, %2, ..., %9 的字符串。
- <参数1> 到 <参数9>:可选参数(数字、字符串或二维/三维点),用于替换对应占位符。
返回值:
- 返回格式化后的字符串,%1 ~ %9 被相应的参数值替换。
注意事项:
1. 最多支持 9 个参数。
2. 浮点数的格式精度根据 AutoCAD 系统变量 LUPREC 决定。
3. 点类型参数将格式化为 (x,y) 或 (x,y,z)。
4. 不支持的参数类型将被替换为 "<unsupported>"。
5. 如果格式字符串中的某个 %n 占位符没有对应参数,将保留原样。
使用示例:
(xdrx_string->format "坐标: %1,高度: %2" '(10.5 20.6) 30)
返回:"坐标: (10.5000,20.6000),高度: 30"
------------------------------------------------------------
3.
函数名:xdrx_string->list
功能说明:
使用指定的分隔符将字符串拆分为多个子字符串,并以列表形式返回。
调用格式:
(xdrx_string->list <分隔符> <被拆分的字符串>)
参数说明:
- <分隔符>:用于拆分字符串的字符或字符串(支持多字符)。
- <被拆分的字符串>:待处理的原始字符串。
返回值:
- 使用指定分隔符拆分后的子字符串列表(Lisp风格字符串列表)。
注意事项:
1. 必须传入两个字符串参数,缺一不可。
2. 分隔符可以是任意字符串,包括多个字符组成。
3. 分隔符之间的空内容(如 "a,,b")也会被保留为空字符串。
4. 返回结果为字符串组成的列表。
使用示例:
(xdrx_string->list "," "a,b,c")
返回:("a" "b" "c")
(xdrx_string->list "::" "one::two::three")
返回:("one" "two" "three")
------------------------------------------------------------
4.
函数名:xdrx_string->pinyin
功能说明:
将中文字符串转换为拼音,可返回首字母或完整拼音。
调用格式:
(xdrx_string->pinyin <中文字符串> )
参数说明:
- <中文字符串>:待转换为拼音的中文字符串。
- :可选参数,若提供则返回完整拼音;否则仅返回每个拼音的首字母。
返回值:
- 如果仅传入一个字符串:返回单个拼音字符串。
- 如果传入多个字符串:返回拼音字符串组成的列表。
注意事项:
1. 支持一次性转换多个字符串。
2. 默认仅返回拼音的首字母(如“测试” → “cs”)。
3. 若提供第二个参数(任意符号,例如 `'t`),则返回完整拼音(如“测试” → “ceshi”)。
4. 非中文字符将被保留或忽略。
使用示例:
(xdrx_string->pinyin "测试")
返回:"cs"
(xdrx_string->pinyin "测试" t)
返回:"ceshi"
(xdrx_string->pinyin "中国" "上海")
返回:("zg" "sh")
------------------------------------------------------------
5.
函数名:xdrx_string->regexp
功能说明:
将通配符字符串(如 `*`、`?`)转换为等效的正则表达式字符串。
调用格式:
(xdrx_string->regexp <通配符字符串>)
参数说明:
- <通配符字符串>:使用通配符(如 `*` 表示多个字符,`?` 表示单个字符)的字符串。
返回值:
- 返回一个正则表达式格式的字符串。
注意事项:
1. `*` 被转换为 `.*`
2. `?` 被转换为 `.`
3. 适用于需要将通配符用于正则匹配的场景。
使用示例:
(xdrx_string->regexp "*.dll")
返回:"^.*\.dll$"
(xdrx_string->regexp "ab?c*")
返回:"^ab.c.*$"
------------------------------------------------------------
6.
函数名:xdrx_string->utf8
功能说明:
将 GBK 或 Unicode 编码的字符串转换为 UTF-8 编码格式。
调用格式:
(xdrx_string->utf8 <输入字符串>)
参数说明:
- <输入字符串>:一个以 GBK 或 Unicode 编码的字符串(通常来自 AutoCAD 文本)。
返回值:
- 返回 UTF-8 编码格式的字符串。
注意事项:
1. 主要用于将字符串转换为 UTF-8,以便用于需要 UTF-8 编码的外部系统或文件中。
2. 仅支持一个字符串参数。
使用示例:
(xdrx_string->utf8 "中文")
返回:转换后的 UTF-8 编码字符串
------------------------------------------------------------
7.
函数名:xdrx-string->width
功能说明:
根据指定字体和高度,计算多行字符串中最长一行的宽度。
调用格式:
(xdrx-string->width <文本> <字体名称> <字体高度> [加粗标志] [斜体标志])
参数说明:
- <文本>:要测量的多行字符串(支持换行符)。
- <字体名称>:字体名称,例如 "宋体"、"Arial"。
- <字体高度>:字体的高度(浮点数)。
- [加粗标志]:可选。若传入 T,则字体加粗;若传入 NIL 或省略,则不加粗。
- [斜体标志]:可选。若传入 T,则字体斜体;若传入 NIL 或省略,则不使用斜体。
返回值:
- 返回最长一行文本的宽度(单位为像素或绘图单位,视环境而定)。
注意事项:
1. 字符串中包含的换行符将被分割为多行分别计算。
2. 若未指定加粗/斜体标志或传入 NIL,则默认不启用相应样式。
使用示例:
(xdrx-string->width "你好\n世界" "宋体" 12.0 T NIL)
返回:最长一行的宽度
------------------------------------------------------------
8.
函数名:xdrx-string<-base64
别名:xdrx-string-base64,xdrx-string-frombase64
功能说明:
将 Base64 编码的字符串解码为普通 Unicode 字符串。
调用格式:
(xdrx-string<-base64 <Base64字符串>)
参数说明:
- <Base64字符串>:待解码的 Base64 编码字符串。
返回值:
- 返回解码后的 Unicode 字符串。
注意事项:
- 只允许一个参数。
- 若传入的字符串为空或不是合法的 Base64 编码,则返回空字符串。
使用示例:
Command: (xdrx-string->base64 "你好")
"xOO6ww=="
Command: (xdrx-string<-base64 "xOO6ww==")
"你好"
------------------------------------------------------------
9.
函数名:xdrx-string->big5
功能说明:
将 Big5 编码的繁体中文转换为简体中文(GBK 编码)。
可用于转换字符串或 AutoCAD 中的文本实体内容。
调用格式:
(xdrx-string->big5 <字符串>)
或
(xdrx-string->big5 <实体名1> [实体名2 ...])
(xdrx-string->big5 <选择集>)
参数说明:
- <字符串>:一个 Big5 编码的繁体字符串。
- <实体名>:需要转换的 TEXT/MTEXT 实体对象名。
- <选择集>:包含多个实体的选择集。
返回值:
- 若参数为字符串:返回转换后的简体中文字符串;
- 若参数为实体:返回成功转换的实体数量。
注意事项:
- 传入字符串时,只能传一个参数;
- 实体只支持 TEXT 和 MTEXT 类型,其他类型忽略。
使用示例:
(xdrx-string->big5 "測試")
返回:"测试"
(xdrx-string->big5 (entlast))
返回:1
------------------------------------------------------------
10.
函数名:xdrx-string<-unicode
功能说明:
将十六进制格式的 Unicode 编码字符串(如 "4F60597D")解码为可读字符串(如 "你好")。
调用格式:
(xdrx-string<-unicode <十六进制字符串>)
参数说明:
- <十六进制字符串>:由 Unicode 编码的十六进制字符组成的字符串(如 "4F60597D"),支持混入空格或非十六进制字符(将被自动忽略)。
返回值:
- 返回解码后的可读字符串。
注意事项:
- 输入必须是偶数字符长度的十六进制字符串,每个字符使用 4 个十六进制数表示(UTF-16 BE);
- 函数会自动过滤非十六进制字符;
- 示例 "4F60 597D" 表示的是两个 Unicode 字符:“你”和“好”。
使用示例:
(xdrx-string<-unicode "4F60 597D")
返回:"你好"
------------------------------------------------------------
11.
函数名称: xdrx-string-arabic2chs
功能描述:
将数字值(短整型、长整型或实数)转换为其中文字符串表示。支持整数和小数部分的处理,并根据模式选择是否保留小数部分。
对多种特殊情况(如数字过大、负数等)进行处理。
调用格式:
(xdrx-string-arabic2chs <numeric_value> )
参数描述:
- <numeric_value>: 一个数字值,可以是短整型、长整型或实数。函数会根据该值转换成中文数字。
- : 可选参数。如果为 false,则会四舍五入,只保留整数部分。如果为 true,则保留小数部分,最多保留两位小数。默认为 false。
返回值:
- 返回数字值对应的中文字符串表示,整数部分和小数部分都会被转换为中文形式。
注意事项:
- 该函数会处理输入数字为负数的情况,但会返回“负数不支持”错误信息。
- 支持大数字(如亿、万等)和小数部分的正确中文转换。
- 如果 为 false,则会对小数部分进行四舍五入处理。
- 如果 为 true,则会保留最多两位小数,并以“角”和“分”来表示小数部分。
示例用法:
(xdrx-string-arabic2chs(123456))
返回: "壹拾贰万叁仟肆佰伍拾陆圆"
(xdrx-string-arabic2chs(123456.78))
返回: "壹拾贰万叁仟肆佰伍拾陆圆捌角柒分"
(xdrx-string-arabic2chs(123456.789, false))
返回: "壹拾贰万叁仟肆佰伍拾陆圆"
(xdrx-string-arabic2chs(123456.78, true))
返回: "壹拾贰万叁仟四百五十六圆捌角柒分"
------------------------------------------------------------
12.
函数名称: xdrx-string-atoi32
功能描述:
将字符串转换为32位整数(int)。该函数支持处理多个字符串输入并将其转换为整数,并返回转换后的结果。
调用格式:
(xdrx-string-atoi32 <string_value>)
参数描述:
- <string_value>: 一个字符串值,可以是整数的字符串表示。函数会将该字符串转换为32位整数类型。
返回值:
- 返回对应字符串转换后的32位整数值。如果字符串无法转换为有效整数,则返回错误。
注意事项:
- 该函数假设输入的字符串表示的是一个有效的整数。
- 如果输入的字符串不能转换为整数,返回转换失败的错误信息。
示例用法:
(xdrx-string-atoi32("123456"))
返回: 123456
(xdrx-string-atoi32("abc"))
返回: 错误: 无法转换为整数
------------------------------------------------------------
13.
函数名称: xdrx-string-big5->fanti
功能描述:
将Big5编码的字符串转换为繁体中文字符,并更新AutoCAD中的文本或多行文本对象。
调用格式:
(xdrx-string-big5->fanti <string_value>)
参数描述:
- <string_value>: 一个字符串值,可以是Big5编码的字符串。该字符串将被转换为繁体中文字符,并返回转换后的结果。
返回值:
- 返回转换后的繁体中文字符串。如果输入是AutoCAD实体对象,返回转换后的实体内容。
注意事项:
- 如果输入是AutoCAD实体对象(如文本或多行文本),则会更新该实体的文本内容为繁体中文。
- 支持通过Big5编码转换为繁体中文,如果转换过程中遇到错误,返回相关错误信息。
示例用法:
(xdrx-string-big5->fanti("这是简体中文"))
返回: "這是簡體中文"
(xdrx-string-big5->fanti(选择的AutoCAD文本对象))
返回: 更新后的繁体中文文本
------------------------------------------------------------
14. 函数名称: xdrx-string-big5->gb
功能描述:
将Big5编码的字符串转换为简体中文字符,并更新AutoCAD中的文本或多行文本对象。
调用格式:
(xdrx-string-big5->gb <string_value>)
参数描述:
- <string_value>: 一个字符串值,可以是Big5编码的字符串。该字符串将被转换为简体中文字符,并返回转换后的结果。
返回值:
- 返回转换后的简体中文字符串。如果输入是AutoCAD实体对象,返回转换后的实体内容。
注意事项:
- 如果输入是AutoCAD实体对象(如文本或多行文本),则会更新该实体的文本内容为简体中文。
- 支持通过Big5编码转换为简体中文,如果转换过程中遇到错误,返回相关错误信息。
示例用法:
(xdrx-string-big5->gb("這是繁體中文"))
返回: "这是简体中文"
(xdrx-string-big5->gb(选择的AutoCAD文本对象))
返回: 更新后的简体中文文本
------------------------------------------------------------
15. 函数名称: xdrx-string-box
功能描述:
计算并返回指定文本的边界框(即文本的外接矩形)。支持根据输入的文本样式、文本高度和宽度缩放因子,计算文本的最小和最大扩展坐标。
调用格式:
(xdrx-string-box <text> <height> <xscale> )
参数描述:
- <text>: 待计算边界框的文本内容(字符串)。
- : 可选的文本样式。如果未提供,使用当前文档的默认文本样式。
- <height>: 文本的高度(浮动类型或整数类型)。
- <xscale>: 文本的水平缩放因子(浮动类型或整数类型)。
- : 可选的布尔值参数,指示是否考虑空格字符。
返回值:
- 返回一个列表,包含文本的四个角点坐标:左下角、右下角、右上角和左上角。
- 每个点以3D坐标形式返回,但z坐标始终为0。
注意事项:
- 如果输入是AutoCAD中的文本实体,则将直接使用该实体的样式、字体大小和缩放因子。
- 如果未提供文本样式,则使用当前文档的默认文本样式。
- 文本的扩展框计算考虑是否包括空格字符。
示例用法:
(xdrx-string-box "Hello" "Arial" 2.5 1.0 T)
返回: 四个角点坐标的LISP列表
(xdrx-string-box 选择的AutoCAD文本对象)
返回: 更新后的四个角点坐标的LISP列表
------------------------------------------------------------
16. 函数名称: xdrx-string-bs_strip
功能描述:
移除字符串中的所有回退字符(0x08),通常用于去除不必要的退格符。
调用格式:
(xdrx-string-bs_strip <string1> <string2> ...)
参数描述:
- <string1>, <string2>, ...: 一个或多个字符串,每个字符串可能包含回退字符(0x08)。函数将返回移除回退字符后的新字符串。
返回值:
- 返回一个或多个移除回退字符后的字符串。
注意事项:
- 此函数处理输入字符串中的每个字符,移除回退字符,返回一个新的字符串列表。
- 支持多个字符串作为输入,每个字符串都会被独立处理并返回。
示例用法:
(xdrx-string-bs_strip "Hello\bWorld" "Test\b\bString")
返回: ("HelloWorld" "TestString")
------------------------------------------------------------
17
函数名称: xdrx-string-case
功能描述:
将输入的字符串转换为大写或小写,取决于是否传入了额外的参数。
调用格式:
(xdrx-string-case <string> [<empty>])
参数描述:
- <string>: 输入字符串。
- [<empty>]: 可选参数。如果不传递额外参数,字符串将被转换为大写;如果传递了空参数,字符串将被转换为小写。
返回值:
- 返回转换后的字符串。
注意事项:
- 如果没有传递额外参数,默认将字符串转换为大写。
- 如果传递了空参数,将会转换为小写。
示例用法:
(xdrx-string-case "Hello") 返回: "HELLO"
(xdrx-string-case "Hello" "") 返回: "hello"
------------------------------------------------------------
18
函数名称: xdrx-string-cat
功能描述:
将多个输入字符串连接为一个单一字符串。
调用格式:
(xdrx-string-cat <string1> <string2> ...)
参数描述:
- <string1>, <string2>, ...: 输入的字符串,可以有多个。
返回值:
- 返回连接后的字符串。
注意事项:
- 可以传递任意数量的字符串参数,所有输入的字符串将依次连接。
- 如果未提供字符串参数,函数将返回空字符串。
示例用法:
(xdrx-string-cat "Hello" " " "World") 返回: "Hello World"
(xdrx-string-cat) 返回: ""
------------------------------------------------------------
19
函数名称: xdrx-string-char
功能描述:
获取字符串中特定位置的字符,或者将指定字符替换到字符串中的指定位置。
调用格式:
(xdrx-string-char <string> <position> [<char>])
参数描述:
- <string>: 输入的字符串。
- <position>: 字符串中字符的位置,必须是有效的整数。
- [<char>]: 可选参数。如果提供了字符,则替换指定位置上的字符;如果未提供字符,则返回指定位置的字符。
返回值:
- 返回修改后的字符串,或者指定位置的字符。
注意事项:
- 如果未提供替换字符,则返回指定位置的字符。
- 如果提供了替换字符,则会将该字符替换到指定位置。
- 如果位置无效或超出了字符串长度范围,将返回错误信息。
示例用法:
(xdrx-string-char "Hello" 1) 返回: "e"
(xdrx-string-char "Hello" 1 "a") 返回: "Hallo"
------------------------------------------------------------
20
函数名称: xdrx-string-chinese_to_mm
功能描述:
将中文字号转换为毫米。根据输入的中文字号名称,返回对应的毫米数。
调用格式:
(xdrx-string-chinese_to_mm <chinese_font>)
参数描述:
- <chinese_font>: 输入的中文字号名称,必须是中文字符,如“初号”、“小一”等。
返回值:
- 返回转换后的毫米值。
注意事项:
- 该函数支持常见的中文字号名称,如“初号”、“小三”等。若输入的字号名称无效,则返回0,并输出错误信息。
- 中文字号与磅数之间有固定对应关系,转换为磅后再转换为毫米。
示例用法:
(xdrx-string-chinese_to_mm "小三") 返回: 4.233
(xdrx-string-chinese_to_mm "五号") 返回: 3.664
------------------------------------------------------------
21
函数名称: xdrx-string-chinese_to_points
功能描述:
将中文字号转换为磅数。根据输入的中文字号名称,返回对应的磅数。
调用格式:
(xdrx-string-chinese_to_points <chinese_font>)
参数描述:
- <chinese_font>: 输入的中文字号名称,必须是中文字符,如“初号”、“小一”等。
返回值:
- 返回转换后的磅数。
注意事项:
- 该函数支持常见的中文字号名称,如“初号”、“小三”等。若输入的字号名称无效,则返回0,并输出错误信息。
- 中文字号与磅数之间有固定对应关系,转换为磅后再返回。
示例用法:
(xdrx-string-chinese_to_points "小三") 返回: 16.0
(xdrx-string-chinese_to_points "五号") 返回: 10.5
------------------------------------------------------------
22
函数名称: xdrx-string-chinese2py
功能描述:
将中文字符串转换为拼音。如果第一个参数为`T`,则拼音之间使用指定的分隔符连接;否则,拼音直接连接。若没有提供分隔符,默认使用`-`。
调用格式:
(xdrx-string-chinese2py <chinese_string> [<separator>])
参数描述:
- (可选):如果传入`T`,则拼音之间使用分隔符连接;如果未传入或传入其他值,则拼音将直接连接。
- <chinese_string>: 输入的中文字符串,将转换为拼音。
- [<separator>]: 可选参数,指定拼音之间的分隔符。如果传入`T`,拼音之间将使用该分隔符连接,默认分隔符为`-`。
返回值:
- 返回转换后的拼音字符串,拼音之间用指定的分隔符连接。
注意事项:
- 输入的中文字符串将被逐一转换成拼音。
- 只有当传入`T`时,拼音之间才会用分隔符连接;如果没有传入`T`,拼音将直接连接。
- 如果没有提供分隔符,默认使用`-`。
示例用法:
(xdrx-string-chinese2py "你好") 返回: "nihao"
(xdrx-string-chinese2py T "你好" "-") 返回: "ni-hao"
------------------------------------------------------------
23
函数名称: xdrx-string-cmplogical
功能描述:
将两个字符串进行逻辑比较。该函数首先获取两个字符串,然后进行字典顺序的比较。如果AutoCAD版本大于16,则使用`StrCmpLogicalW`进行比较,否则使用标准的`strcmp`函数进行比较。
调用格式:
(xdrx-string-cmplogical <string1> <string2>)
参数描述:
- <string1>: 第一个输入字符串。
- <string2>: 第二个输入字符串。
返回值:
- 返回两个字符串的比较结果。若`string1`小于`string2`,返回负数;若`string1`等于`string2`,返回0;若`string1`大于`string2`,返回正数。
注意事项:
- 该函数在AutoCAD版本大于16时,使用逻辑比较函数`StrCmpLogicalW`进行比较。
- 对于AutoCAD版本小于或等于16,使用标准的`strcmp`函数进行比较。
示例用法:
(xdrx-string-cmplogical "apple" "banana")返回: -1
(xdrx-string-cmplogical "apple" "apple") 返回: 0
(xdrx-string-cmplogical "banana" "apple") 返回: 1
------------------------------------------------------------
24
函数名称: xdrx-string-collate
功能描述:
比较两个字符串,支持区分或不区分大小写。该函数首先获取两个字符串,然后根据参数决定是否区分大小写进行比较。如果不区分大小写,则将两个字符串都转换为小写后进行比较。
调用格式:
(xdrx-string-collate <string1> <string2> [<case_sensitive>])
参数描述:
- <string1>: 第一个输入字符串。
- <string2>: 第二个输入字符串。
- [<case_sensitive>]: 可选参数,默认为`T`(区分大小写)。如果设置为`F`,则不区分大小写进行比较。
返回值:
- 如果`string1`小于`string2`,返回负数;如果`string1`等于`string2`,返回0;如果`string1`大于`string2`,返回正数。
注意事项:
- 如果提供了`case_sensitive`参数并设置为`F`,则字符串比较时不区分大小写。
- 默认情况下,比较时会区分大小写。
示例用法:
(xdrx-string-collate "apple" "banana") 返回: -1
(xdrx-string-collate "apple" "apple") 返回: 0
(xdrx-string-collate "banana" "apple") 返回: 1
(xdrx-string-collate "apple" "Apple" F) 返回: 0
(xdrx-string-collate "apple" "Apple") 返回: 1
------------------------------------------------------------
25
函数名称: xdrx-string-compare
功能描述:
比较两个字符串,区分大小写或不区分大小写。该函数首先获取两个字符串,并在没有额外参数时进行区分大小写的比较。如果存在第三个参数,则进行不区分大小写的比较。
调用格式:
(xdrx-string-compare <string1> <string2> [<ignore_case>])
参数描述:
- <string1>: 第一个输入字符串。
- <string2>: 第二个输入字符串。
- [<ignore_case>]: 可选参数,默认为`F`(区分大小写)。如果设置为`T`,则不区分大小写进行比较。
返回值:
- 返回值为负数表示`string1`小于`string2`,返回值为0表示相等,返回值为正数表示`string1`大于`string2`。
注意事项:
- 默认情况下,字符串比较时会区分大小写。
- 如果提供了`ignore_case`参数并设置为`T`,则字符串比较时不区分大小写。
示例用法:
(xdrx-string-compare "apple" "banana") 返回: -1
(xdrx-string-compare "apple" "apple") 返回: 0
(xdrx-string-compare "banana" "apple") 返回: 1
(xdrx-string-compare "apple" "Apple" T) 返回: 0
(xdrx-string-compare "apple" "Apple") 返回: 1
------------------------------------------------------------
26
函数名称: xdrx-string-comparenocase
功能描述:
比较两个字符串,不区分大小写。如果两个字符串相同,返回`T`,否则返回`nil`。
调用格式:
(xdrx-string-comparenocase <string1> <string2>)
参数描述:
- <string1>: 第一个输入字符串。
- <string2>: 第二个输入字符串。
返回值:
- 如果两个字符串相同(不区分大小写),返回`T`。
- 如果两个字符串不同,返回`nil`。
示例用法:
(xdrx-string-comparenocase "apple" "APPLE")返回: T
(xdrx-string-comparenocase "apple" "banana") 返回: nil
------------------------------------------------------------
27
函数名称: xdrx-string-convertencoding
功能描述:
将一系列字符串从一种编码转换为另一种编码,支持多种字符串转换。
调用格式:
(xdrx-string-convertencoding <string1> <string2> ... <from_encoding> <to_encoding>)
参数描述:
- <string1>, <string2>, ...: 需要转换编码的字符串。
- <from_encoding>: 源编码格式。
- <to_encoding>: 目标编码格式。
返回值:
- 返回转换后的字符串列表。
示例用法:
(xdrx-string-convertencoding "hello" "world" "UTF-8" "GB2312") 返回: ["你好", "世界"]
------------------------------------------------------------
28
函数名称: xdrx-string-cull
功能描述:
从字符串列表中移除空字符串或无效字符串,返回筛选后的字符串列表。支持区分大小写的筛选。
调用格式:
(xdrx-string-cull <string1> <string2> ... )
参数描述:
- <string1>, <string2>, ...: 需要进行筛选的字符串。
- : 可选参数,布尔值,表示是否区分大小写,默认为区分大小写。
返回值:
- 返回筛选后的字符串列表。如果没有有效字符串,则返回空列表。
示例用法:
(xdrx-string-cull "hello" "world" "" "TEST") 返回: ["hello", "world", "TEST"]
------------------------------------------------------------
29
函数名称: xdrx-string-delete
功能描述:
从指定字符串中删除指定位置开始的若干字符,并返回修改后的字符串。
调用格式:
(xdrx-string-delete <string> <index> )
参数描述:
- <string>: 需要修改的目标字符串。
- <index>: 起始位置索引,指定从字符串中的哪个位置开始删除。
- : 可选参数,表示删除的字符数,默认为1。
返回值:
- 返回删除指定字符后的新字符串。如果索引或删除的字符数无效,返回原字符串。
示例用法:
(xdrx-string-delete "hello world" 6 5) 返回: "hello"
------------------------------------------------------------
30
函数名称: xdrx-string-deunicode
功能描述:
将Unicode编码的字符串转换为常规字符串。该函数将输入的Unicode字符串解码为普通字符,并返回解码后的字符串。
调用格式:
(xdrx-string-deunicode <unicode_string> [<unicode_string> ...])
参数描述:
- <unicode_string>: 一个或多个Unicode编码的字符串。
返回值:
- 返回解码后的字符串。如果传入多个Unicode字符串,则返回一个列表,包含解码后的每个字符串。
示例用法:
(xdrx-string-deunicode "Hello%20World" "Another%20String") 返回: "Hello World" "Another String"
------------------------------------------------------------
30
函数名称: xdrx-string-env_collapse
功能描述:
将输入字符串中的环境变量路径替换为环境变量名称的占位符格式。该函数将识别字符串中的环境变量,并用环境变量名称(如`%ENV_VAR%` 或 `${ENV_VAR}`)替换它们。
调用格式:
(xdrx-string-env_collapse <input_string> [<min_length>])
参数描述:
- <input_string>: 要进行替换的字符串,包含可能的环境变量路径。
- <min_length>: 最小的环境变量值长度(默认为3)。环境变量的值必须大于此长度才能进行替换。
返回值:
- 返回一个字符串,其中所有符合条件的环境变量值已被替换为其环境变量名称占位符。
示例用法:
(xdrx-string-env_collapse "Path=%ProgramFiles%\\App\\bin" 4) 返回: "Path=${ProgramFiles}\\App\\bin"
------------------------------------------------------------
30
函数名称: xdrx-string-env_expand
功能描述:
该函数将输入字符串中的环境变量占位符(如 `%ENV_VAR%` 或 `${ENV_VAR}`)展开为对应的环境变量值。它会识别字符串中的环境变量名称并将其替换为当前系统中的环境变量值。
调用格式:
(xdrx-string-env_expand <input_string> [<min_length>])
参数描述:
- <input_string>: 包含环境变量占位符的字符串。
- <min_length>: 环境变量值的最小长度(默认为3)。如果环境变量值的长度小于此值,则不会进行展开。
返回值:
- 返回一个字符串,其中所有符合条件的环境变量占位符已被其对应的环境变量值替换。
示例用法:
(xdrx-string-env_expand "Path=${ProgramFiles}\\App\\bin" 4) 返回: "Path=C:\\Program Files\\App\\bin"
------------------------------------------------------------
31
函数名称: xdrx-string-env_variables
功能描述:
该函数返回系统中所有环境变量的名称和值。返回的结果为LISP样式的列表,每个列表项是一个包含环境变量名和变量值的配对。
调用格式:
(xdrx-string-env_variables)
参数描述:
- 无参数。
返回值:
- 返回一个LISP列表,每个元素是一个二元组,其中第一个元素为环境变量的名称,第二个元素为对应的环境变量值。例如:((ENV_VAR1 . VALUE1) (ENV_VAR2 . VALUE2))。
示例用法:
(xdrx-string-env_variables) 返回: ((PATH . "C:\\Windows\\System32") (USERPROFILE . "C:\\Users\\JohnDoe"))
------------------------------------------------------------
32
函数名称: xdrx-string-equal
功能描述:
该函数比较两个字符串是否相等,可以选择是否进行大小写不敏感的比较。该函数检查输入的两个字符串是否完全相同,比较时可根据用户指定的大小写敏感选项进行比较。
调用格式:
(xdrx-string-equal <string1> <string2>)
参数描述:
- <string1>: 第一个待比较的字符串。
- <string2>: 第二个待比较的字符串。
- caseSensitive: 一个布尔值,决定是否进行大小写敏感比较。如果设置为true,则比较时考虑大小写;如果为false,则不考虑大小写(默认值为true)。
返回值:
- 如果两个字符串相等,且根据大小写敏感选项进行比较,则返回true;否则返回false。
示例用法:
(xdrx-string-equal "Hello" "hello") 返回: false
(xdrx-string-equal "Hello" "hello" caseSensitive:false) 返回: true
------------------------------------------------------------
33
函数名称: xdrx-string-esc_wildcards
功能描述:
该函数将输入的字符串中的通配符字符(如 `*` 和 `?`)转义,以避免它们在字符串匹配中被当作特殊符号。它返回转义后的字符串,可以用于匹配操作中。
调用格式:
(xdrx-string-esc_wildcards <string1> [<string2> ...])
参数描述:
- <string1>: 待处理的字符串,可能包含通配符。
- <string2> ...: 可选的额外字符串,若提供,将一并进行处理。
返回值:
- 返回包含所有转义后的字符串的LISP列表。
示例用法:
(xdrx-string-esc_wildcards "file*.txt") 返回: "file\*.txt"
(xdrx-string-esc_wildcards "doc?*.pdf") 返回: "doc\?\*.pdf"
------------------------------------------------------------
34
函数名称: xdrx-string-eval_expression
函数别名:xdrx-string-evalexpression
功能描述:
该函数用于解析和计算输入字符串中的数学表达式。它识别并提取表达式中的数字、运算符(如 `+`、`-`、`*`、`/`)并进行计算,最终返回结果。
调用格式:
(xdrx-string-eval_expression <expression>)
参数描述:
- <expression>: 一个字符串,包含需要计算的数学表达式,支持基本的算术运算符。
返回值:
- 返回一个浮动数值,即计算表达式的结果。
示例用法:
(xdrx-string-eval_expression "5+3*2") 返回: 11.0
(xdrx-string-eval_expression "10/2") 返回: 5.0
------------------------------------------------------------
35
函数名称: xdrx-string-excluding
功能描述:
该函数从输入的第一个字符串中移除所有在第二个字符串中出现的字符,并返回处理后的字符串。`SpanExcluding` 方法被用来完成从第一个字符串中排除第二个字符串中字符的操作。
调用格式:
(xdrx-string-excluding <string1> <string2>)
参数描述:
- <string1>: 输入的第一个字符串,函数会从该字符串中移除第二个字符串中出现的字符。
- <string2>: 输入的第二个字符串,包含要被从第一个字符串中排除的字符。
返回值:
- 返回处理后的字符串,包含从第一个字符串中排除第二个字符串中所有字符的结果。
示例用法:
(xdrx-string-excluding "abcdefg" "bd") 返回: "acefg"
------------------------------------------------------------
36
函数名称: xdrx-string-extents
功能描述:
该函数根据输入字符串、字体样式、高度、宽度比例等信息计算文本的边界框(extents),并返回该边界框的尺寸。用户可以指定文字是否包含空格,以及是否使用特定的文本样式来计算。
调用格式:
(xdrx-string-extents <text_string> <style_name_or_nil> <height> <xscale> [<include_space>])
参数描述:
- <text_string>: 输入的文本字符串,计算该字符串的边界框。
- <style_name_or_nil>: 可选的文本样式名。如果未提供,则使用当前文档的默认文本样式。
- <height>: 字符的高度,用于计算边界框。
- <xscale>: 字符的宽度比例,用于计算边界框。
- <include_space>: 可选,布尔值。如果为真,计算结果会包括空格。
返回值:
- 返回一个包含文本边界框宽度和高度的列表。
示例用法:
(xdrx-string-extents "Hello" "Standard" 1.0 1.0) 返回: (1.234 0.567)
------------------------------------------------------------
37
函数名称: xdrx-string-fanti->big5
功能描述:
该函数将输入的字符串从简体中文(GBK/Traditional)转换为繁体中文BIG5编码。如果输入是字符串,则直接返回转换后的字符串;如果输入是AutoCAD实体(如AcDbText或AcDbMText),则将这些实体中的文本内容进行转换。
调用格式:
(xdrx-string-fanti->big5 <text_string>)
参数描述:
- <text_string>: 输入的简体中文字符串,转换为BIG5编码的繁体中文。也可以输入AutoCAD实体,如文本或多行文本对象,程序会在其中进行相应的文本转换。
返回值:
- 如果输入是字符串,返回转换后的BIG5编码字符串。
- 如果输入是AutoCAD实体,返回转换的实体数量。
示例用法:
(xdrx-string-fanti->big5 "你好,世界") 返回: "你好,世界"(转换为BIG5编码)
------------------------------------------------------------
38
函数名称: xdrx-string-fanti->gb
功能描述:
该函数将输入的字符串从繁体中文(GBK/Traditional)转换为简体中文GBK编码。如果输入是字符串,则直接返回转换后的字符串;如果输入是AutoCAD实体(如AcDbText或AcDbMText),则将这些实体中的文本内容进行转换。
调用格式:
(xdrx-string-fanti->gb <text_string>)
参数描述:
- <text_string>: 输入的繁体中文字符串,转换为GBK编码的简体中文。也可以输入AutoCAD实体,如文本或多行文本对象,程序会在其中进行相应的文本转换。
返回值:
- 如果输入是字符串,返回转换后的GBK编码简体中文字符串。
- 如果输入是AutoCAD实体,返回转换的实体数量。
示例用法:
(xdrx-string-fanti->gb "繁体字") 返回: "简体字"(转换为GBK编码)
------------------------------------------------------------
39
函数名称: xdrx-string-find
功能描述:
该函数用于在字符串中查找匹配项。它允许通过正则表达式、忽略大小写等选项来进行灵活的查找。
调用格式:
(xdrx-string-find <match_string> <str> [<ignore_case>] [<use_regexp>] [<start_index>])
参数描述:
- <match_string>: 要查找的匹配模式(字符串或正则表达式)。
- <str>: 被搜索的目标字符串。
- <ignore_case>: (可选)如果为真,表示在查找时忽略大小写。默认为 true。
- <use_regexp>: (可选)如果为真,表示使用正则表达式进行匹配。默认为 false。
- <start_index>: (可选)指定开始查找的起始位置,默认为1。
返回值:
- 返回匹配项的起始位置(从1开始),如果没有找到匹配项则返回 nil。
示例用法:
(xdrx-string-find "pattern" "search_string") 返回: 5(匹配项的起始位置)
(xdrx-string-find "pattern" "search_string" nil t 3) 返回: 5(使用正则表达式从第3个字符开始查找)
------------------------------------------------------------
40
函数名称: xdrx-string-findoneof
功能描述:
该函数用于查找字符串中第一个出现的字符是否在指定的字符集合中。通过`FindOneOf`方法,能够快速找到目标字符在给定字符集中的位置。
调用格式:
(xdrx-string-findoneof <str> <chars>)
参数描述:
- <str>: 被搜索的目标字符串。
- <chars>: 字符集合(字符串),用于查找目标字符串中第一个出现的字符。
返回值:
- 如果找到匹配的字符,返回其在目标字符串中的位置(从0开始);如果没有找到,返回 -1。
示例用法:
(xdrx-string-findoneof "abcdef" "xyz") 返回: -1(没有找到匹配字符)
(xdrx-string-findoneof "abcdef" "def") 返回: 3(字符 'd' 在目标字符串中的位置)
------------------------------------------------------------
41
函数名称: xdrx-string-format
函数别名:xdrx-string-formatex,xdrx-string-formatx
功能描述:
该函数用于实现自定义的字符串格式化功能。通过解析格式化字符串和相关的参数,返回一个格式化后的字符串。支持多种格式说明符,如整数、浮点数、字符和字符串,并能处理宽度、精度等格式化选项。
调用格式:
(xdrx-string-format <format_string> <value>...)
参数描述:
- <format_string>: 格式化字符串,类似于 C++ 中的 printf 格式。它可以包含格式说明符(如 `%d`, `%s`, `%f` 等),并决定如何显示后续的参数。
- <value>: 与格式字符串中的格式说明符对应的值。支持多种类型的参数,如整数、浮点数、字符串等。
返回值:
返回格式化后的字符串。如果格式化过程中有错误,返回原始格式化字符串或空字符串。
示例用法:
(xdrx-string-format "Value: %d, Name: %s" 42 "Alice") 返回: "Value: 42, Name: Alice"
------------------------------------------------------------
42
函数名称: xdrx-string-formatcurrency
功能描述:
该函数用于根据给定的货币格式参数格式化一个浮动数值(货币),并返回格式化后的货币字符串。可以定制小数位数、前导零、千位分隔符、十进制分隔符以及货币符号等格式选项。
调用格式:
(xdrx-string-formatcurrency <value> [<num_digits>] [<leading_zero>] [<decimal_sep>] [<thousand_sep>] [<currency_symbol>])
参数描述:
- <value>: 要格式化的货币值(浮动数值类型)。
- [<num_digits>]: 小数点后的数字位数,范围是 0 到 9。可选,默认为当前的货币格式设置。
- [<leading_zero>]: 是否使用前导零。0 表示不使用,1 表示使用。可选,默认为当前设置。
- [<decimal_sep>]: 自定义的十进制分隔符。可选,默认为当前设置。
- [<thousand_sep>]: 自定义的千位分隔符。可选,默认为当前设置。
- [<currency_symbol>]: 自定义的货币符号。可选,默认为当前设置。
返回值:
返回格式化后的货币字符串。如果格式化失败,则返回 Nil。
示例用法:
(xdrx-string-formatcurrency 12345.6789) 返回: "$12,345.68"
(xdrx-string-formatcurrency 12345.6789 2 1 "," "." "$") 返回: "$12.345,68"
------------------------------------------------------------
43
函数名称: xdrx-string-formatdate
功能描述:
根据指定的日期格式字符串和日期时间数组格式化输出一个日期字符串。可用于将年月日等组成的数组转换为自定义格式的日期字符串。
调用格式:
(xdrx-string-formatdate <format_string> <date_list>)
参数描述:
- <format_string>: 日期格式字符串,使用 MFC 的 CTime::Format 支持的格式,例如 `%Y-%m-%d`, `%A %B %d, %Y`, `%H:%M:%S` 等。
- <date_list>: 表示时间的整数列表,至少包含前三项:年、月、日。可选项包括时、分、秒。例如 `(2024 5 14 10 30 0)`。
返回值:
返回格式化后的日期字符串;如果格式无效或输入参数不正确,返回 Nil。
示例用法:
(xdrx-string-formatdate "%Y-%m-%d" '(2025 5 14)) 返回: "2025-05-14"
(xdrx-string-formatdate "%A, %B %d, %Y" '(2025 5 14)) 返回: "Wednesday, May 14, 2025"
(xdrx-string-formatdate "%Y/%m/%d %H:%M:%S" '(2025 5 14 8 15 30)) 返回: "2025/05/14 08:15:30"
------------------------------------------------------------
44
函数名称: xdrx-string-gb->big5
功能描述:
将输入的简体中文字符串(GBK编码)转换为繁体中文(Big5编码)。若提供的是 AutoCAD 文本实体(如 Text 或 MText),则批量将其中的文字进行编码转换。
调用格式:
(xdrx-string-gb->big5 <string> | <entity> ...)
参数描述:
- <string>: (可选)要转换的字符串,使用 GBK 编码,转换为 Big5 并返回。
- <entity>: (可选)一个或多个文本实体(Text 或 MText),将其内容从 GBK 转换为 Big5,实体可通过实体名、选择集等方式传入。
返回值:
- 若输入为字符串,返回对应的 Big5 编码字符串;
- 若输入为实体集合,返回被成功转换的实体数量;
- 若输入参数无效或无匹配实体,返回 Nil。
示例用法:
(xdrx-string-gb->big5 "简体中文")
返回: "繁體中文"
(ssget) -> p 选择文字实体后调用
(command "_xdrx-string-gb->big5" (ssget))
返回: 成功转换的实体数量
45
函数名称: xdrx-string-gb->fanti
功能描述:
将简体中文字符串(GBK编码)转换为繁体中文(GBK编码的繁体字形)。若传入的是 AutoCAD 文本实体(如 Text 或 MText),则批量将其文本内容从简体转换为繁体。
调用格式:
(xdrx-string-gb->fanti <string> | <entity> ...)
参数描述:
- <string>: (可选)要转换的字符串,编码为 GBK 简体,返回对应的 GBK 繁体字符串。
- <entity>: (可选)一个或多个实体(如 Text 或 MText),支持传入实体名称、选择集等方式,对实体的文字内容进行简体转繁体转换。
返回值:
- 若输入为字符串,返回繁体中文字符串;
- 若输入为实体,返回成功修改的实体数量;
- 无有效输入时返回 Nil。
示例用法:
(xdrx-string-gb->fanti "简体中文字")
返回: "簡體中文字"
(command "_xdrx-string-gb->fanti" (ssget))
返回: 成功转换的实体数量
------------------------------------------------------------
46
函数名称: xdrx-string-including
功能描述:
返回输入字符串 `str1` 中从头开始包含在 `str2` 中的所有字符组成的子串(即 `str1` 的前缀部分,且每个字符都属于 `str2`)。
调用格式:
(xdrx-string-including <str1> <str2>)
参数描述:
- <str1>: 原始字符串。
- <str2>: 字符集合,仅当 <str1> 的字符存在于此集合中时才会被包含。
返回值:
返回 `str1` 的前缀部分,该部分仅包含 `str2` 中存在的字符;若首字符就不匹配,则返回空字符串。
示例用法:
(xdrx-string-including "abc123xyz" "abc123")
返回: "abc123"
(xdrx-string-including "123abc" "0123456789")
返回: "123"
(xdrx-string-including "abc" "XYZ")
返回: ""
------------------------------------------------------------
47
函数名称: xdrx-string-insert
功能描述:
在指定位置将一个子字符串插入到原始字符串中。
调用格式:
(xdrx-string-insert <str> <index> <insert-str>)
参数描述:
- <str>: 原始字符串。
- <index>: 插入位置(从 0 开始计数)。必须小于字符串长度。
- <insert-str>: 要插入的字符串。
返回值:
返回插入后的新字符串。如果插入位置无效(负数或超出原始字符串长度),返回错误并输出提示。
示例用法:
(xdrx-string-insert "abcde" 2 "-X-")
返回: "ab-X-cde"
(xdrx-string-insert "hello" 0 ">>")
返回: ">>hello"
(xdrx-string-insert "world" 5 "!")
⚠️ 无效,因为 index >= length,返回错误
------------------------------------------------------------
48
函数名称: xdrx-string-int64to32
功能描述:
将两个表示 64 位整数的高 32 位和低 32 位的整数,转换为带符号的 32 位整数(根据模式处理方式)。
调用格式:
(xdrx-string-int64to32 <high32> <low32> )
参数描述:
- <high32>: 64 位整数的高 32 位部分。
- <low32>: 64 位整数的低 32 位部分。
- : 可选参数。如果存在,则使用无符号模式;如果不提供 nil,则使用有符号模式。
返回值:
返回两个转换后的 32 位整数值,作为 Lisp 列表。
示例用法:
(xdrx-string-int64to32 0 123456789)
返回: (0 123456789)
(xdrx-string-int64to32 1 -1)
返回: (1 -1)
(xdrx-string-int64to32 1 -1 nil)
⚠️ 启用无符号模式(具体行为取决于实现)
注意事项:
- 参数数量必须为两个整数(高位和低位),否则无效。
- 如果输入不是整数类型,命令将返回错误。
------------------------------------------------------------
49
函数名称: xdrx-string-ischar
功能描述:
测试字符串的首字符是否满足指定的字符类别条件(例如是否是字母、数字、空格等)。
调用格式:
(xdrx-string-ischar <str> <flag>)
参数说明:
- <str>: 要测试的字符串,仅检测第一个字符。
- <flag>: 整型位掩码,用于指定检测的字符类型。支持以下位值组合:
- 1:字母或数字字符(isalnum)
- 2:字母字符(isalpha)
- 4:十进制数字字符(isdigit)
- 8:可打印字符(isprint)
- 16:标点符号字符(ispunct)
- 32:空白字符(包括空格、制表符等)(isspace)
- 64:小写字母(islower)
- 128:大写字母(isupper)
- 256:ASCII 字符(isascii)
- 512:控制字符(iscntrl)
返回值:
- T:如果字符符合所有指定类型;
- nil:否则。
示例用法:
(xdrx-string-ischar "A" 3)
测试是否是字母或数字(1)和是否是字母(2),返回 T。
(xdrx-string-ischar " " 32)
测试是否是空白字符,返回 T。
(xdrx-string-ischar "@" 4)
测试是否是数字,返回 nil。
注意事项:
- 只检测字符串的第一个字符。
- flag 参数必须在 1 到 1024 之间。
------------------------------------------------------------
50
函数名称: xdrx-string-isutf8
功能描述:
判断输入字符串是否为有效的 UTF-8 编码。如果是 UTF-8 编码,则将其转换为 Unicode 并返回。
调用格式:
(xdrx-string-isutf8 <str> [<length>])
参数说明:
- <str>: 要检测的字符串,要求是原始的 UTF-8 字节串(通常从二进制文件中读取)。
- <length>(可选): 指定参与判断的字节长度。如果不提供,则默认使用字符串的全部长度。
返回值:
- 如果字符串是有效的 UTF-8 编码,返回其对应的 Unicode 字符串;
- 如果不是 UTF-8 编码,返回 nil。
示例用法:
(xdrx-string-isutf8 "E4BDA0E5A5BD")
返回对应的中文 "你好"(如果输入为原始 UTF-8 编码字符串)。
注意事项:
- 该函数用于判断原始字节串是否符合 UTF-8 编码格式。
- 通常用于读取非 Unicode 编码的外部数据文件(如文本文件)后进行格式判断。
- 若未提供 length,则自动以字符串长度为准。
------------------------------------------------------------
51
函数名称: xdrx-string-itoa32
功能描述:
将整数转换为其32位整数表示的字符串形式。
即使在64位系统上,该函数也会强制截断为32位整数,以模拟兼容某些只支持32位整数的CAD系统。
调用格式:
(xdrx-string-itoa32 <int1> <int2> ...)
参数说明:
- <int>: 一个或多个整数(可以是 short、long、int64)。
- 输入可以使用 (RTLONG) 或 (RTSHORT),输入序列可包含多个整数。
返回值:
- 返回一个字符串列表,其中每个字符串是对应输入整数的 32 位截断值的字符串表示。
示例用法:
(xdrx-string-itoa32 2684354560) 返回: ("-1610612736")
(xdrx-string-itoa32 1234567890) 返回: ("1234567890")
(xdrx-string-itoa32 -2684354560) 返回: ("1610612736")
备注:
- 如果输入值超出32位整数范围 [-2147483648, 2147483647],将进行位级截断。
- 该函数对兼容 AutoCAD、BricsCAD 等 CAD 系统具有实际意义,尤其在跨平台或迁移时保持一致性。
------------------------------------------------------------
52
函数名称: xdrx-string-join
功能描述:
将一个列表中的各个元素连接成一个字符串,并可指定连接符(分隔符)。
调用格式:
(xdrx-string-join <list> [<separator>])
参数说明:
- <list>: 要连接的元素列表。列表中的元素可以是字符串、整数(short/long)、实数等。
- <separator>: (可选)连接时使用的分隔符,默认不使用分隔符(即空字符串)。
返回值:
- 返回一个由列表元素连接而成的字符串。
示例用法:
(xdrx-string-join '("a" "b" "c") "-") 返回: "a-b-c"
(xdrx-string-join '(1 2 3) ",") 返回: "1,2,3"
(xdrx-string-join '("abc" 123 4.5) "") 返回: "abc1234"
备注:
- 本函数在处理混合类型(字符串、整数、实数)时会自动转换为字符串再拼接。
- 如果列表中包含不支持的类型,将被忽略。
------------------------------------------------------------
53
函数名称: xdrx-string-left
功能描述:
返回字符串最左侧指定数量的字符。
调用格式:
(xdrx-string-left <string> <count>)
参数说明:
- <string>: 要处理的字符串。
- <count>: 要提取的字符数(从字符串左边开始计数)。必须是非负整数。
返回值:
- 返回由字符串最左侧 `count` 个字符组成的新字符串。
- 如果 `count` 大于字符串长度,则返回整个字符串。
示例用法:
(xdrx-string-left "abcdef" 3) 返回: "abc"
(xdrx-string-left "测试函数" 2) 返回: "测试"
备注:
- 如果参数无效或 `count` 小于 0,函数不会执行并返回空结果。
------------------------------------------------------------
54
函数名称: xdrx-string-length
功能描述:
返回字符串的字符长度。
调用格式:
(xdrx-string-length <string>)
参数说明:
- <string>: 要处理的字符串。
返回值:
- 返回该字符串的字符数量(整数)。
示例用法:
(xdrx-string-length "abc") 返回: 3
(xdrx-string-length "测试函数") 返回: 4
备注:
- 此函数返回的是“字符”数量,而不是字节数。
- 在 Unicode 编码中,一个中文字符(如“测”)与一个英文字符(如“a”)都被视为一个字符,因此都计为 1。
- 如果需要按字节数(例如 UTF-8 编码下)计算长度,请使用其他函数进行转换和计算。
------------------------------------------------------------
55
函数名称: xdrx-string-logical<
功能描述:
按逻辑字符串顺序判断两个字符串的大小关系,如果第一个字符串逻辑上小于第二个,返回 T。
调用格式:
(xdrx-string-logical< <string1> <string2>)
参数说明:
- <string1>: 第一个字符串。
- <string2>: 第二个字符串。
返回值:
- 如果 string1 小于 string2,返回 T(true)。
- 否则无返回值(nil)。
示例用法:
(xdrx-string-logical< "a9" "a10") 返回: T
(xdrx-string-logical< "file2" "file12") 返回: T
(xdrx-string-logical< "b" "a") 返回: nil
备注:
- 本函数采用“逻辑比较”方式判断字符串顺序,即会自动识别字符串中包含的数字部分。
- 与传统的字典序比较不同,逻辑比较会将 "a9" 判定小于 "a10"。
- 在 AutoCAD 2007 及以上版本中使用 `StrCmpLogicalW` 实现逻辑比较;在更旧版本中使用标准 `strcmp` 比较。
------------------------------------------------------------
56
函数名称: xdrx-string-logical>
功能描述:
按逻辑字符串顺序判断两个字符串的大小关系,如果第一个字符串逻辑上大于第二个,返回 T。
调用格式:
(xdrx-string-logical> <string1> <string2>)
参数说明:
- <string1>: 第一个字符串。
- <string2>: 第二个字符串。
返回值:
- 如果 string1 大于 string2,返回 T(true)。
- 否则无返回值(nil)。
示例用法:
(xdrx-string-logical> "a11" "a2") 返回: T
(xdrx-string-logical> "file12" "file2") 返回: T
(xdrx-string-logical> "a" "b") 返回: nil
备注:
- 本函数采用“逻辑比较”方式判断字符串顺序,即会自动识别字符串中包含的数字部分。
- 与传统的字典序比较不同,逻辑比较会将 "a11" 判定大于 "a2"。
- 在 AutoCAD 2007 及以上版本中使用 `StrCmpLogicalW` 实现逻辑比较;在更旧版本中使用标准 `strcmp` 比较。
------------------------------------------------------------
57
函数名称: xdrx-string-lr-trim
功能描述:
去除目标字符串两端所有指定的字符。
调用格式:
(xdrx-string-lr-trim <string> <trim-chars>)
参数说明:
- <string>: 要处理的字符串。
- <trim-chars>: 包含所有需要被去除的字符集合(作为字符串传入)。
返回值:
- 返回去除前后指定字符后的字符串。
示例用法:
(xdrx-string-lr-trim ",Hello, World! ," " ,") 返回: "Hello, World!"
(xdrx-string-lr-trim "--ABC--" "-") 返回: "ABC"
(xdrx-string-lr-trim "....text...." ".") 返回: "text"
备注:
- 所有出现在 <trim-chars> 中的字符都会被从原字符串两端剔除,直到遇到不在该集合中的字符。
- 不会影响中间出现的字符,仅处理首尾。
- 如果字符串中所有字符都属于 trim-chars,则返回空字符串。
------------------------------------------------------------
58
函数名称: xdrx-string-m-find
功能描述:
在目标字符串中查找所有子字符串的起始位置,并返回位置列表。
调用格式:
(xdrx-string-m-find <what> <string>)
参数说明:
- <what>: 要查找的子字符串。
- <string>: 被搜索的目标字符串。
返回值:
- 返回一个整数列表,表示所有匹配子字符串在目标字符串中的起始位置(从 0 开始计数)。
- 如果未找到任何匹配项,返回 nil。
示例用法:
(xdrx-string-m-find "ab" "abcabdab")
返回: (0 3 6)
(xdrx-string-m-find "is" "This is a test. This string is long.")
返回: (2 5 20 31)
(xdrx-string-m-find "xyz" "abcdefg")
返回: nil
备注:
- 区分大小写。
- 如果 <what> 为空字符串,结果未定义。
- 返回的位置是从 0 开始计数的偏移量。
------------------------------------------------------------
59
函数名称: xdrx-string-match
功能描述:
判断字符串是否与通配符模式匹配。支持可选的大小写不敏感匹配。
调用格式:
(xdrx-string-match <string> <pattern> )
参数说明:
- <string>: 要匹配的目标字符串。
- <pattern>: 包含通配符的匹配模式。支持 `*` 表示任意多个字符,`?` 表示单个字符。
- : 可选参数,若提供此参数(任意值),则匹配时不区分大小写。
返回值:
- 返回 T 表示匹配成功。
- 返回 nil 表示匹配失败。
示例用法:
(xdrx-string-match "abc.txt" "*.txt")
返回: T
(xdrx-string-match "ABC.TXT" "*.txt")
返回: nil
(xdrx-string-match "ABC.TXT" "*.txt" T)
返回: T
(xdrx-string-match "log123" "log??")
返回: T
(xdrx-string-match "log123" "log?")
返回: nil
备注:
- 通配符 `*` 可匹配任意数量的字符(包括 0 个)。
- 通配符 `?` 只匹配一个字符。
- 默认大小写敏感,若需忽略大小写,添加第三个参数。
------------------------------------------------------------
60
函数名称: xdrx-string-matchreplace
功能描述:
对字符串中的匹配模式进行替换。根据指定格式 `{+}` 查找占位符,并依次用后续参数替换。
调用格式:
(xdrx-string-matchreplace <template-str> <arg1> <arg2> ...)
参数说明:
- <template-str>: 包含占位符的格式字符串。占位符形式为 `{+}`,其中 `n` 表示参数的索引(从 0 开始)。
- <arg1>, <arg2>, ...: 要替换占位符的参数。可以是字符串、整数、浮点数、点 (2D/3D) 等。
返回值:
- 返回替换完成后的字符串。
示例用法:
(xdrx-string-matchreplace "Value1: {+}, Value2: {+}" "ABC" 123)
返回: "Value1: ABC, Value2: 123"
(xdrx-string-matchreplace "Point: {+}" (list 10.0 20.0 30.0))
返回: "Point: (10.0 20.0 30.0)"
(xdrx-string-matchreplace "Pos2D: {+}, Count: {+}" (list 5.5 6.6) 8)
返回: "Pos2D: (5.5 6.6), Count: 8"
备注:
- 占位符 `{+}` 中的 `n` 表示参数的序号(按输入参数顺序)。
- 支持的参数类型包括:
- 字符串(RTSTR)
- 整型(RTSHORT / RTLONG)
- 浮点数(RTREAL)
- 2D点(RTPOINT)
- 3D点(RT3DPOINT)
------------------------------------------------------------
61
函数名称: xdrx-string-md5hash
功能描述:
计算指定字符串的 MD5 哈希值,并返回其 32 位十六进制表示。
调用格式:
(xdrx-string-md5hash <str>)
参数说明:
- <str>: 要计算哈希值的字符串。
返回值:
- 返回 <str> 的 MD5 哈希字符串(32 个十六进制字符)。
示例用法:
(xdrx-string-md5hash "hello world")
返回: "5eb63bbbe01eeed093cb22bb8f5acdc3"
备注:
- 输入必须是字符串类型。
- 该函数使用标准 MD5 算法,输出结果为小写十六进制格式。
- 常用于校验、签名、字符串唯一性判断等场景。
------------------------------------------------------------
62
函数名称: xdrx-string-merge
描述:
将多个不同类型的参数(字符串、整数、实数、点)合并成一个字符串,并返回该字符串。
调用格式:
(xdrx-string-merge <arg1> <arg2> ...)
参数说明:
- <arg1>, <arg2>, ...: 这些参数可以是不同类型,包括:
- RTSTR: 字符串。
- RTSHORT: 短整数。
- RTLONG: 长整数。
- RTREAL: 实数。
- RT3DPOINT: 3D点 (X, Y, Z)。
- RTPOINT: 2D点 (X, Y)。
返回值:
- 返回一个合并后的字符串,所有输入参数根据类型转换成字符串后合并。
示例用法:
(xdrx-string-merge "结果: " 5 3.14 (0.0 0.0 0.0))
返回: "结果: 5 3.14 (0.0 0.0 0.0)"
备注:
- 该函数将多个不同类型的参数连接成一个字符串。
- 每个参数在添加之前都会被转换成字符串表示。
- 常用于构建消息或将多个值连接在一起用于日志或输出。
------------------------------------------------------------
63
函数名称: xdrx-string-mid
描述:
从给定字符串中提取指定位置的子字符串,支持两种形式:仅指定起始位置,或指定起始位置和提取的字符数。
调用格式:
(xdrx-string-mid <字符串> <起始位置> [<字符数>])
参数说明:
- `<字符串>`: 要提取子字符串的原始字符串。
- `<起始位置>`: 提取的起始位置(从0开始计数)。
- `<字符数>`: 可选,提取的字符数。如果不指定字符数,则提取从起始位置到字符串末尾的所有字符。
返回值:
- 返回指定位置的子字符串。
示例用法:
1. (xdrx-string-mid "Hello, World!" 7)
返回: "World!"
2. (xdrx-string-mid "Hello, World!" 7 5)
返回: "World"
备注:
- 如果 `起始位置` 或 `字符数` 为负数,函数会输出错误信息并返回。
- 如果省略 `字符数` 参数,默认从指定的 `起始位置` 提取到字符串的末尾。
------------------------------------------------------------
64
函数名称: xdrx-string-mm->points
描述:
将给定的毫米值转换为点值,并返回转换后的结果。该函数常用于图形或设计软件中,其中点是常见的长度单位(1点 = 1/72 英寸)。
调用格式:
(xdrx-string-mm->points <value_in_mm>)
参数说明:
- <value_in_mm>: 要转换的毫米值,类型可以是:
- RTSHORT: 短整数。
- RTREAL: 实数。
返回值:
- 返回转换后的点值(real类型)。
示例用法:
(xdrx-string-mm->points 25.4)
返回: 72
备注:
- 该函数将毫米值转换为点值,转换公式为:
\[
1 \text{ 毫米} = 2.83465 \text{ 点}
\]
- 输入参数需要是有效的数字类型。
- 常用于图形设计中,将毫米长度转换为点单位。
------------------------------------------------------------
65
函数名称: xdrx-string-multilanguage
描述:
根据当前语言设置或强制设置的语言,选择返回两种数据中的一种。此函数用于支持多语言的环境,根据系统的语言或用户的强制语言设置选择适当的响应。
调用格式:
(xdrx-string-multilanguage <data_for_language_1> <data_for_language_2>)
参数说明:
- <data_for_language_1>: 针对语言1的数据,通常是中文(简体)等。
- <data_for_language_2>: 针对语言2的数据,通常是英文等。
返回值:
- 返回根据当前语言选择的数据。如果系统语言是简体中文,则返回第一个数据项;否则返回第二个数据项。如果强制语言设置为0,则依据系统语言;强制语言设置为1时,返回第一个数据;设置为2时,返回第二个数据。
示例用法:
(xdrx-string-multilanguage '数据1' 'Data 2')
返回: '数据1'(如果系统语言为中文)
备注:
- 该函数适用于支持多语言的应用场景,可以根据用户的系统语言或强制语言设置选择数据。
- 如果强制语言为1,将始终返回第一个数据项。
- 如果强制语言为2,将始终返回第二个数据项。
------------------------------------------------------------
66
函数名称: xdrx-string-numbersort
描述:
对输入的字符串进行排序,可以选择按照自然顺序或字典顺序进行排序。自然顺序排序将数字按照数值的大小排序,而字典顺序排序将其按字符串字面值排序。
调用格式:
(xdrx-string-numbersort <string1> <string2> ... <option>)
参数说明:
- <string1>, <string2>, ...: 这些参数是待排序的字符串,支持的类型为RTSTR(字符串)。
- <option>: 可选参数。如果提供了该参数并且其类型为RTT,表示使用字典顺序进行排序,默认情况下按自然顺序排序。
返回值:
- 返回排序后的字符串列表。如果提供了排序选项(RTT),则按字典顺序排序;否则,按自然顺序排序。
示例用法:
(xdrx-string-numbersort "10" "2" "1")
返回: ("1" "2" "10")
(xdrx-string-numbersort "10" "2" "1" RTT)
返回: ("1" "10" "2")
备注:
- 自然顺序排序适用于数字字符串(例如"10"、"2"等),将它们按照数字的大小进行排序,而不是按字面值排序。
- 字典顺序排序按字符串的字面顺序排列,适用于所有字符串。
------------------------------------------------------------
67
函数名称: xdrx-string-points->mm
描述:
将一个表示点的值(单位为点)转换为毫米。此函数接受一个数值并将其从点(pt)单位转换为毫米(mm)单位。
调用格式:
(xdrx-string-points->mm <value>)
参数说明:
- <value>: 输入的值,可以是RTSHORT(短整数)或RTREAL(实数),表示以点为单位的数值。
返回值:
- 返回转换后的值,单位为毫米。
示例用法:
(xdrx-string-points->mm 10)
返回: 2.83465 (假设转换系数为:1点 = 0.352777 毫米)
备注:
- 该函数通常用于从点单位转换到毫米单位,点是常用的排版度量单位,而毫米是更常见的实际物理单位。
- 此函数仅支持数值类型(RTSHORT和RTREAL)。
------------------------------------------------------------
68
函数名称: xdrx-string-print_format
描述:
此函数接收两组数据,第一组是字符串数据,第二组是对应的列宽或排序位置等数据,返回格式化并排序后的结果。该函数可以按指定列进行排序,格式化数据以适应列宽,并使用填充字符来对齐数据。
调用格式:
(xdrx-string-print_format <data1> <data2>)
参数说明:
- <data1>: 包含待格式化的字符串的列表。每个字符串可以是不同类型的参数,如字符、整数、实数等。
- <data2>: 包含列宽或排序位置的列表,可以是整数类型或者3D点、2D点等。
返回值:
- 返回一个格式化后的字符串列表,按照指定的列宽和排序规则进行处理。
示例用法:
(xdrx-string-print_format '(("abc" "def" "ghi") ("123" "456" "789")) '((3 3 3) (0)))
返回: ("abc 123 " "def 456 " "ghi 789 ")
备注:
- 此函数主要用于输出格式化的表格数据,支持中文排序,并允许按列进行排序。
- 参数<data1>中的每个元素会根据列宽填充空格或其他字符来对齐。
- 可以指定是否需要排序以及排序的列。
- 适用于表格数据的输出或日志信息的格式化。
------------------------------------------------------------
70
函数名称: xdrx-string-print_table_format
描述:
此函数接收两组数据,第一组是待打印的表格数据,第二组是列宽、排序、对齐等信息。它将格式化并排序表格数据,然后输出表格的格式化内容。支持按指定列排序,并能够自动调整表格的列宽,输出的表格支持填充字符对齐。
调用格式:
(xdrx-string-print_table_format <data1> <data2>)
参数说明:
- <data1>: 表格数据列表。每个数据元素包含一行数据,其中每行的数据项为字符串。
- <data2>: 包含列宽、排序列和排序标志等信息。可为整型,3D点或2D点,支持列宽和排序列的指定。
返回值:
- 返回格式化并排序后的表格数据,以列表的形式返回每行数据。
示例用法:
(xdrx-string-print_table_format '(("abc" "def" "ghi") ("123" "456" "789")) '((3 3 3) (0) ("sort" 2)))
返回: ("abc 123 " "def 456 " "ghi 789 ")
备注:
- 该函数主要用于表格数据的格式化与输出,支持中文排序,并能够按照指定列排序。
- 数据表格每列的宽度会根据列宽自动调整,多余部分通过填充字符进行对齐。
- 适用于数据的表格化输出或日志的格式化。
------------------------------------------------------------
71
函数名称: xdrx-string-printf
描述:
该函数通过格式化输出来自 `resbuf` 参数列表的内容,类似于 C 标准库的 `printf` 函数。它从 `resbuf` 获取参数并按指定的格式输出,支持不同类型的格式说明符,如整数、浮点数、字符和字符串。
调用格式:
(xdrx-string-printf <format_string> <arg1> <arg2> ...)
参数说明:
* <format_string>: 格式化字符串,用于指定如何输出后续参数。格式化符号与 C 标准库的 `printf` 相同。
* <arg1>, <arg2>, ...: 这些是根据格式字符串指定的参数。可以是以下类型之一:
* RTSHORT: 短整数。
* RTLONG: 长整数。
* RTREAL: 实数。
* RTSTR: 字符串。
* RTENAME: 文件名或路径。
返回值:
* 返回一个格式化后的字符串,该字符串根据输入的格式化字符串和参数生成。
示例用法:
(xdrx-string-printf "The value is: %d and the name is: %s" 42 "example.txt")
返回: "The value is: 42 and the name is: example.txt"
备注:
* 该函数支持整数、浮点数、字符和字符串类型的格式化输出。
* 支持 `printf` 风格的格式化字符串,可以使用标志、宽度和精度等参数。
* 常用于输出调试信息、日志记录或生成格式化的消息。
------------------------------------------------------------
72
函数名称: xdrx-string-printfx
描述:
此函数接收一个格式化字符串和一组可变参数,类似于标准 C 的 `printf` 函数,但专为 AutoCAD 环境优化,能够处理 AutoCAD 的 Lisp 类型数据。函数会根据提供的格式字符串输出格式化后的字符串,并返回给 Lisp 环境。支持多种数据类型,如整数、浮动点数、字符串、3D 点等,并且能自动处理其数据类型和大小。
调用格式:
(xdrx-string-printfx <format_string> <arguments>)
参数说明:
- `<format_string>`: 一个字符串,定义输出的格式,类似于标准 C 的 `printf` 格式字符串。
- `<arguments>`: 一系列参数,类型可以包括整数、长整数、浮动点数、字符串、3D 点等。参数的数量和类型应与格式字符串相匹配。
返回值:
- 返回格式化后的字符串,将其输出给 Lisp 环境。
示例用法:
(xdrx-string-printfx "Value: %d, Point: (%f, %f, %f)" 42 1.0 2.0 3.0)
返回: "Value: 42, Point: (1.000000, 2.000000, 3.000000)"
备注:
- 该函数支持 AutoCAD 中的 Lisp 数据类型,包括 `RTSHORT`、`RTLONG`、`RTREAL`、`RTSTR` 等。
- 通过使用 `std::unique_ptr`,动态分配内存,避免内存泄漏。
- 输出的格式化字符串通过 `_vstprintf` 函数进行处理,确保与格式字符串相匹配。
- 支持 3D 点和其他复杂数据类型的格式化输出。
------------------------------------------------------------
73
函数名称: xdrx-string-rand
描述:
该函数用于生成一个随机字符串,字符串的长度和字符集可以通过输入参数进行定制。默认情况下,生成的随机字符串包含数字和大写字母(长度为3)。如果提供了一个正整数参数,函数将根据该长度生成字符串。如果参数为 RTT 类型,则会生成一个包括大小写字母和数字的字符串。
调用格式:
(xdrx-string-rand <length> )
参数说明:
- `<length>`: 一个整数,表示生成的随机字符串的长度。默认为 3。
- ``: 如果为真,则生成的随机字符串将包含小写字母。
返回值:
- 返回一个字符串,表示生成的随机字符串。
示例用法:
(xdrx-string-rand 5)
返回: "A1B2C"
(xdrx-string-rand 5 T)
返回: "A1b2C"
备注:
- 字符集默认包含数字和大写字母,若 `include_lowercase` 参数为 `T`,则增加小写字母。
- 使用 `rand()` 函数生成随机数,并通过 `srand()` 初始化随机种子。
- 生成的字符串长度不小于 1,若提供的长度小于等于 0,则默认长度为 3。
- 使用 `ads_retstr()` 将结果返回给 Lisp 环境。
------------------------------------------------------------
74
函数名称: xdrx-string-regexpescape
描述:
该函数用于转义字符串中的正则表达式特殊字符。它会处理输入字符串中的反斜杠及其他特殊字符,并根据正则表达式规则进行转义。
调用格式:
(xdrx-string-regexpescape <string1> [<string2> ...])
参数说明:
- `<string1>`, `<string2>`, ...: 需要进行转义的字符串,可以是多个字符串。
返回值:
- 返回一个列表,其中每个元素都是一个转义后的字符串。
示例用法:
(xdrx-string-regexpescape "abc" "hello*world")
返回: ("abc" "hello\*world")
备注:
- 如果输入字符串包含特殊字符,如 `*`, `+`, `?`, `[` 等,会根据正则表达式的规则进行转义。
- 对于字符串中的反斜杠(`\`),只有当其后跟随特殊字符时才认为它已经转义,否则会被转义为 `\\`。
- 使用 `CMyString::escapeRegexSpecialChars()` 处理每个字符串并将其转义。
------------------------------------------------------------
75
函数名称: xdrx-string-regexpr
描述:
该函数使用PCRE2库进行正则表达式替换操作。它支持在输入字符串中查找匹配的内容,并根据给定的替换字符串进行替换。支持全局匹配、正则表达式标志的传递等功能。
调用格式:
(xdrx-string-regexpr <match> <newstr> <string1> [<string2> ...])
参数说明:
- `<match>`: 用于匹配的正则表达式模式。
- `<newstr>`: 用于替换匹配内容的字符串。
- `<string1>`, `<string2>`, ...: 要进行替换操作的字符串。
返回值:
- 返回一个列表,其中每个元素都是替换后的字符串。
示例用法:
(xdrx-string-regexpr "abc" "XYZ" "abcdef" "abcxyz")
返回: ("XYZdef" "XYZxyz")
备注:
- 使用PCRE2(Perl Compatible Regular Expressions)库处理正则表达式,相比标准C++正则库(如`std::regex`),PCRE2提供了一些增强特性:
- **更强的正则表达式功能**:PCRE2支持一些标准C++正则库不支持的功能,如正则表达式中对Unicode字符的更好支持,以及对非贪婪匹配、正向后查找等高级功能的支持。
- **性能优化**:PCRE2通常在处理大规模文本或复杂的正则表达式时具有更高的性能。
- **扩展的匹配选项**:PCRE2支持更多的匹配标志(例如,`PCRE2_UCP`,用于Unicode字符集的支持),而这些选项在`std::regex`中不可用。
- **回调支持**:PCRE2支持通过回调函数对匹配结果进行处理,这在某些场景下比标准C++的正则表达式更为灵活。
- 本函数通过调用 `XdGeUtils::PCRE2Replace()` 进行替换操作。它允许传递多个字符串进行批量替换,并支持标志(如大小写敏感、全局匹配等)。
备注:
- 使用PCRE2(Perl Compatible Regular Expressions)库处理正则表达式,相比标准C++正则库(如`std::regex`),PCRE2提供了一些增强特性:
- **更强的正则表达式功能**:
PCRE2支持一些标准C++正则库不支持的功能,如:
- **正向和负向前瞻 (Lookahead)**: PCRE2支持正向前瞻 `(?=...)` 和负向前瞻 `(?!...)`,这是标准C++正则库中没有的功能。前瞻允许你检查某位置前后的内容,而不消耗字符。例如,`abc(?=def)` 匹配以 `abc` 开头,后面跟着 `def` 的字符串,但不包含 `def` 部分。
- **正向和负向后瞻 (Lookbehind)**: 同样,PCRE2支持正向后瞻 `(?<=...)` 和负向后瞻 `(?<!...)`,它们在`std::regex`中并不可用。后瞻允许你检查一个模式是否存在于某位置之前。
- **条件匹配 (Conditional Matching)**: PCRE2支持通过 `?(condition)true-regex|false-regex` 进行条件匹配,这使得正则表达式根据前面匹配的结果选择性地应用不同的模式。标准C++正则表达式并不直接支持这种特性。
- **Unicode支持**:
PCRE2在处理Unicode字符集时比标准C++正则库更为强大。例如:
- `PCRE2_UCP`标志使得PCRE2支持Unicode字符集(如匹配字母、数字等),而标准C++正则库没有类似的扩展。
- 可以使用Unicode字符类(例如,`\p{L}` 匹配任何字母字符)和`Unicode`特性。
- **性能优化**:
PCRE2通常在处理大规模文本或复杂的正则表达式时具有更高的性能,尤其是支持正则表达式的查找、替换操作时。标准C++ `std::regex`库的性能通常不如PCRE2,特别是在复杂表达式和大数据量的场景下。
- **回调支持**:
PCRE2提供了通过回调函数处理匹配结果的能力,这在某些复杂的正则操作中比标准C++的`std::regex`更为灵活。例如,PCRE2可以将每个匹配结果传递给自定义的处理函数,这在执行批量替换操作时非常有用。
- **扩展的匹配选项**:
PCRE2支持更多的匹配标志(例如,`PCRE2_CASELESS`、`PCRE2_MULTILINE`、`PCRE2_DOTALL`等),这些选项在`std::regex`中不可用。标志的使用可以让你控制匹配过程中的细节,例如大小写敏感、跨行匹配等。PCRE2还支持`PCRE2_UTF`来启用UTF-8模式,处理多字节字符。
- 本函数通过调用 `XdGeUtils::PCRE2Replace()` 进行替换操作。它允许传递多个字符串进行批量替换,并支持标志(如大小写敏感、全局匹配等)。
- 使用 `adsout` 输出调试信息,以帮助用户查看匹配过程和替换结果。
- 使用 `adsout` 输出调试信息,以帮助用户查看匹配过程和替换结果。
------------------------------------------------------------
76
函数名称: xdrx-string-regexps
描述:
该函数使用PCRE2(Perl兼容正则表达式)库执行正则表达式查找和分割操作。它使用给定的正则表达式模式,对多个输入字符串进行匹配,并根据匹配结果将输入字符串拆分。此函数还允许传递各种正则表达式标志来控制匹配行为。
调用格式:
(xdrx-string-regexps <match> <string1> [<string2> ...])
参数说明:
- `<match>`: 用于匹配的正则表达式模式。
- `<string1>`, `<string2>`, ...: 要进行查找和拆分操作的字符串。
返回值:
- 返回一个列表,其中每个元素表示匹配或拆分后的字符串。
示例用法:
(xdrx-string-regexps "abc" "abcdef" "abcxyz")
返回: ("def" "xyz")
备注:
- 本函数使用PCRE2(Perl兼容正则表达式)库来执行查找和分割操作。与标准C++正则库(如`std::regex`)相比,PCRE2提供了一些增强功能:
- **更强的正则表达式功能**:
- **高级的前瞻和后顾**:PCRE2支持正向和负向前瞻(`(?=...)`, `(?!...)`)以及正向和负向后顾(`(?<=...)`, `(?<!...)`),可以进行复杂的模式匹配,而`std::regex`不支持这些功能。
- **条件匹配**:PCRE2支持条件匹配`?(condition)true-regex|false-regex`,即根据前一个匹配的结果来决定使用的正则表达式,这在`std::regex`中是无法实现的。
- **Unicode和多字节字符支持**:
- PCRE2支持Unicode字符集,通过像`PCRE2_UCP`这样的标志,可以更好地处理Unicode字符,而`std::regex`在Unicode支持方面较为有限。
- **基于匹配进行分割**:
- PCRE2可以直接根据匹配结果执行“分割”操作,而`std::regex`通常需要在匹配之后额外处理来进行分割。
- **扩展的匹配标志选项**:
- PCRE2提供了更多的标志选项,如`PCRE2_CASELESS`、`PCRE2_MULTILINE`、`PCRE2_UTF`,可以更精细地控制匹配过程,而`std::regex`的功能不如PCRE2强大。
- **性能优化**:
- 在处理复杂的正则表达式或大规模文本时,PCRE2通常比`std::regex`表现得更高效。
PCRE2的增强功能:
1. **前瞻和后顾**:PCRE2支持正向和负向的前瞻和后顾断言,这在`std::regex`中无法实现。
2. **Unicode支持**:PCRE2提供更强的Unicode支持,允许匹配Unicode字符集中的字符,而`std::regex`对Unicode的支持相对较弱。
3. **基于匹配的分割**:PCRE2原生支持基于匹配结果进行字符串分割,`std::regex`通常需要额外的后处理。
4. **扩展的匹配标志**:PCRE2提供更多的匹配标志,如`PCRE2_CASELESS`、`PCRE2_MULTILINE`、`PCRE2_UTF`,这些选项使得匹配过程更加灵活。
5. **性能**:在处理复杂或大规模文本时,PCRE2通常比`std::regex`表现得更高效。
因此,对于需要高级正则表达式功能的应用,PCRE2是一个更强大的选择,而`std::regex`在某些简单场景下可能足够使用。
------------------------------------------------------------
77
函数名称: xdrx-string-remove
描述:
该函数用于从给定的字符串中删除指定的字符。它接受两个参数:一个是待处理的字符串,另一个是要删除的字符。删除指定字符后,返回修改后的字符串。
调用格式:
(xdrx-string-remove <str> <ch>)
参数说明:
- `<str>`: 要处理的原始字符串。
- `<ch>`: 要从字符串中删除的字符。
返回值:
- 返回一个修改后的字符串,其中删除了所有指定的字符。
示例用法:
(xdrx-string-remove "abcdef" "b")
返回: "acdef"
备注:
- 本函数利用 `CString::Remove()` 方法从字符串中删除指定字符。`CString` 是AutoCAD环境中用于处理字符串的类,它提供了许多操作字符串的方法,包括删除字符、查找子串、大小写转换等。
- **功能**:该函数删除字符串中所有匹配的字符。例如,在字符串 "abcdef" 中删除字符 "b",结果是 "acdef"。
- **性能**:该方法直接修改字符串,适用于中小型字符串的处理,性能良好。
- **字符删除**:该操作仅删除一个字符,所有匹配的字符都将被删除。如果需要删除多个字符或更复杂的操作,可以考虑使用正则表达式方法。
- **AutoCAD环境兼容性**:`CString` 是AutoCAD的原生字符串类型,因此该函数与AutoCAD开发环境中的其他字符串操作功能兼容。
- **局限性**:该函数只能删除指定的单一字符,对于更复杂的字符集或模式,可能需要结合正则表达式工具进行处理。
------------------------------------------------------------
78
函数名称: xdrx-string-replace
描述:
该函数用于在字符串中替换指定的子字符串为新的子字符串。它支持大小写敏感和不敏感的替换,同时也可以进行正则表达式替换。该函数还允许限制替换次数。
调用格式:
(xdrx-string-replace <source_string> <old_substring> <new_substring> [<ignore_case>] [<use_regexp>] [<num_replaces>])
参数说明:
- `<source_string>`: 要进行替换的原始字符串。
- `<old_substring>`: 要被替换的子字符串。
- `<new_substring>`: 用于替换的子字符串。
- ``: 可选参数。如果为true,替换将忽略大小写,默认为true。
- ``: 可选参数。如果为true,表示将`old_substring`视为正则表达式进行替换,默认为false。
- ``: 可选参数。替换的最大次数,默认为替换所有匹配项。
返回值:
- 返回替换后的字符串。
示例用法:
(xdrx-string-replace "hello world" "world" "everyone")
返回: "hello everyone"
(xdrx-string-replace "Hello World" "world" "everyone" 1)
返回: "Hello everyone"
备注:
- 本函数通过 `CMyString::AcetStrReplace()` 完成实际的替换操作。此函数提供了大小写敏感、忽略大小写和正则表达式替换等选项。
- **正则表达式支持**:`useRegExp` 标志使得旧子字符串能够作为正则表达式进行替换。这提供了比简单子字符串匹配更强大的匹配功能。
- **大小写敏感**:`ignore_case` 标志控制是否进行大小写敏感的匹配。默认情况下,替换操作是不区分大小写的,除非显式指定。
- **替换次数限制**:`num_replaces` 参数限制替换的次数。如果设置为正整数,替换将只进行指定次数。如果为0,则替换所有匹配项。
- **LISP 中的使用注意**:
- 如果在 LISP 中调用此函数,`ignore_case` 和 `use_regexp` 参数是可选的,缺省值分别为 `true` 和 `false`。
- `num_replaces` 参数在 LISP 中也是可选的,默认替换所有匹配项。如果你只希望替换指定次数,可以传入该参数(如 `1` 仅替换第一次匹配)。
- 如果传入的参数个数不正确或类型不匹配,函数将不会进行替换,LISP 会返回空值。
- 注意,当使用正则表达式替换时,LISP 中传递的 `old_substring` 将被当作正则表达式处理,因此需要确保其符合正则表达式的语法要求。
------------------------------------------------------------
79
函数名称: xdrx_string_reverse
描述:
该函数用于将输入的字符串进行反转操作。例如,将 "abc" 反转后得到 "cba"。
调用格式:
(xdrx_string_reverse <str>)
参数说明:
- `<str>`: <必须> 要反转的原始字符串。
返回值:
- 返回一个反转后的字符串。
示例用法:
(xdrx_string_reverse "abcdef")
返回: "fedcba"
------------------------------------------------------------
80
函数名称: xdrx-string-reversefind
描述:
该函数用于在指定字符串中从右向左查找指定字符首次出现的位置。返回值为该字符在字符串中的索引(从 0 开始计数)。如果未找到,返回空值。
调用格式:
(xdrx-string-reversefind <str> <ch>)
参数说明:
- `<str>`: <必须> 要搜索的原始字符串。
- `<ch>`: <必须> 要查找的目标字符(仅限单个字符)。
返回值:
- 返回目标字符从右向左首次出现的位置(从 0 开始的索引)。如果未找到,返回空值。
示例用法:
(xdrx-string-reversefind "abcabc" "b")
返回: 4
------------------------------------------------------------
81
函数名称: xdrx-string-right
描述:
该函数用于从给定字符串的右侧提取指定数量的字符。若指定数量大于字符串长度,则返回整个字符串;若为 0,则返回空字符串。
调用格式:
(xdrx-string-right <str> <count>)
参数说明:
- `<str>`: <必须> 要处理的原始字符串。
- `<count>`: <必须> 要从字符串右侧提取的字符数量,必须为非负整数。
返回值:
- 返回一个新字符串,包含从右侧提取的指定数量的字符。
示例用法:
(xdrx-string-right "abcdef" 3)
返回: "def"
------------------------------------------------------------
82
函数名称: xdrx-string-sort
描述:
该函数用于对字符串列表进行排序。支持三种排序方式:逻辑排序(默认)、不区分大小写排序、区分大小写排序。同时可指定升序或降序排序。
调用格式:
(xdrx-string-sort <strlist> [<case-sensitive>] [<ascending>])
参数说明:
- `<strlist>`: <必须> 要排序的字符串列表。
- `<case-sensitive>`: [可选] 排序方式控制值:
- -1:逻辑排序(默认)
-0:不区分大小写排序
-1:区分大小写排序
- `<ascending>`: [可选] 排序方向:
- T 表示升序(默认)
- nil 表示降序
返回值:
- 返回排序后的字符串列表。如果列表为空,返回 nil。
示例用法:
(xdrx-string-sort '("Banana" "apple" "Orange"))
返回: ("apple" "Banana" "Orange")
(xdrx-string-sort '("Banana" "apple" "Orange") 1 nil)
返回: ("Orange" "Banana" "apple")
------------------------------------------------------------
83
函数名称: xdrx-string-space-trim
描述:
该函数用于去除一个或多个字符串的前导和尾随空格。支持传入多个字符串作为参数,返回去除空格后的字符串列表。
调用格式:
(xdrx-string-space-trim <str1> [<str2> ...])
参数说明:
- `<str1>`: <必须> 要处理的第一个字符串。
- `<str2> ...`: [可选] 可选的额外字符串。
返回值:
- 返回一个包含所有处理后字符串的列表,其中每个字符串的前导和尾随空格已被移除。
示例用法:
(xdrx-string-space-trim "abc" "def" "ghi")
返回: ("abc" "def" "ghi")
------------------------------------------------------------
84
函数名称: xdrx-string-spanexcluding
描述:
该函数从字符串的起始处开始,提取所有**不包含指定字符集合**的连续字符,直到遇到集合中任意一个字符为止。
调用格式:
(xdrx-string-spanexcluding <str> <charset>)
参数说明:
- `<str>`: <必须> 要处理的原始字符串。
- `<charset>`: <必须> 包含分隔字符的字符串集合,一旦遇到这些字符即停止提取。
返回值:
- 返回一个子字符串,该子字符串由 `<str>` 起始处不包含 `<charset>` 中任何字符的部分组成。
示例用法:
(xdrx-string-spanexcluding "abc123xyz" "1234567890")
返回: "abc"
------------------------------------------------------------
85
函数名称: xdrx-string-spanincluding
描述:
该函数从字符串的起始处开始,提取所有**只包含指定字符集合**的连续字符,直到遇到集合外的字符为止。
调用格式:
(xdrx-string-spanincluding <str> <charset>)
参数说明:
- `<str>`: <必须> 要处理的原始字符串。
- `<charset>`: <必须> 包含允许匹配的字符集合,扫描将在遇到集合外字符时停止。
返回值:
- 返回一个子字符串,该子字符串由 `<str>` 起始处仅包含 `<charset>` 中字符的部分组成。
示例用法:
(xdrx-string-spanincluding "123abc456" "1234567890")
返回: "123"
------------------------------------------------------------
86
函数名称: xdrx-string-split
描述:
该函数用于将给定的字符串按照指定的分隔符进行拆分。返回一个字符串列表,包含拆分后的各个子串。支持正则表达式作为分隔符。
调用格式:
(xdrx-string-split <str> <separator>)
参数说明:
- `<str>`: <必须> 要被拆分的原始字符串。
- `<separator>`: <必须> 用于拆分字符串的分隔符,支持正则表达式。
返回值:
- 返回一个由子字符串组成的列表,每个元素为一个字符串。
示例用法:
1. 普通字符分隔:
(xdrx-string-split "a,b,c" ",")
返回: ("a" "b" "c")
2. 使用多个分隔符(逗号或分号):
(xdrx-string-split "ab,cd;ef" "[,;]")
返回: ("ab" "cd" "ef")
3. 拆分连续空格和制表符:
(xdrx-string-split "a b\t\tc" "[ \t]+")
返回: ("a" "b" "c")
------------------------------------------------------------
87
函数名称: xdrx-string-subst
描述:
将原字符串中第一次出现的目标子串替换为新的子串。如果目标子串不存在,则返回原字符串不变。
调用格式:
(xdrx-string-subst <new> <old> <string>)
参数说明:
- `<new>`:<必须> 要替换成的新子串。
- `<old>`:<必须> 要被替换的旧子串,仅替换第一次出现的位置。
- `<string>`:<必须> 要执行替换操作的原字符串。
返回值:
- 返回替换后的字符串,如果没有找到 `<old>`,则返回原字符串。
示例用法:
1. 基本替换:
(xdrx-string-subst "X" "b" "abcabc")
返回: "aXcabc"
2. 目标子串不存在:
(xdrx-string-subst "X" "z" "abcabc")
返回: "abcabc"
3. 替换第一个空格为下划线:
(xdrx-string-subst "_" " " "hello world test")
返回: "hello_world test"
------------------------------------------------------------
88
函数名称: xdrx-string-substr
描述:
从字符串中提取子字符串。可以指定起始位置和长度。起始位置从1开始。如果未指定长度,则提取从起始位置到字符串末尾的部分。
调用格式:
(xdrx-string-substr <string> <start> <length>)
参数说明:
- `<string>`:<必须> 输入的原字符串。
- `<start>`:<必须> 子字符串的起始位置,从1开始。
- `<length>`:<可选> 子字符串的长度,默认从起始位置到字符串末尾。
返回值:
- 返回提取的子字符串,如果起始位置无效或长度为负数,则返回空字符串。
示例用法:
1. 提取从第2个字符开始,长度为3的子字符串:
(xdrx-string-substr "abcdef" 2 3)
返回: "bcd"
2. 提取从第1个字符开始,直到字符串末尾的子字符串:
(xdrx-string-substr "abcdef" 1)
返回: "abcdef"
3. 提取无效范围的子字符串:
(xdrx-string-substr "abcdef" 7 3)
返回: ""
------------------------------------------------------------
89
函数名称: xdrx-string-to-list
描述:
将给定的字符串按指定的分隔符拆分成字符串列表。可以用于拆分包含多个值的字符串,例如将 CSV 格式的字符串拆分为独立的元素。
调用格式:
(xdrx-string-to-list <string> <delimiter>)
参数说明:
- `<string>`:<必须> 要拆分的原始字符串。
- `<delimiter>`:<必须> 分隔符,指定拆分时使用的字符或字符串。
返回值:
- 返回拆分后的字符串列表。
示例用法:
1. 将逗号分隔的字符串拆分成列表:
(xdrx-string-to-list "apple,banana,orange" ",")
返回: `("apple", "banana", "orange")`
2. 使用其他字符作为分隔符进行拆分:
(xdrx-string-to-list "apple;banana;orange" ";")
返回: `("apple", "banana", "orange")`
------------------------------------------------------------
90
函数名称: xdrx-string-tok
描述:
该函数用于将给定的字符串按指定的分隔符拆分成多个子字符串(tokens)。它接收两个参数:一个是要拆分的字符串,另一个是分隔符。函数返回由分隔符分隔后的所有子字符串组成的列表。
调用格式:
(xdrx-string-tok <str> <delimiter>)
参数说明:
- `<str>`: 需要拆分的原始字符串。
- `<delimiter>`: 拆分字符串时使用的分隔符。该参数必须是一个有效的字符或字符串。
返回值:
返回一个包含拆分后子字符串的列表。每个子字符串作为列表中的一个元素。
示例用法:
1. 拆分以空格为分隔符的字符串:
(xdrx-string-tok "apple banana orange" " ")
返回: `("apple", "banana", "orange")`
2. 拆分以逗号为分隔符的字符串:
(xdrx-string-tok "apple,banana,orange" ",")
返回: `("apple", "banana", "orange")`
------------------------------------------------------------
91
函数名称: xdrx-string-tokens
描述:
该函数用于将给定的字符串按指定的分隔符拆分为多个子字符串。它接受两个参数:一个是待拆分的字符串,另一个是分隔符。函数根据分隔符将字符串拆分成多个子字符串,并返回拆分后的结果。
调用格式:
(xdrx-string-tokens <str> <delimiter>)
参数说明:
- `<str>`: 需要拆分的原始字符串。
- `<delimiter>`: 用于拆分字符串的分隔符。可以是单个字符或字符串。
返回值:
返回一个包含所有拆分后子字符串的列表。如果字符串没有被拆分,返回一个空列表。
示例用法:
1. 使用逗号分隔拆分字符串:
(xdrx-string-tokens "apple,banana,orange" ",")
返回: `("apple", "banana", "orange")`
2. 使用空格分隔拆分字符串:
(xdrx-string-tokens "apple banana orange" " ")
返回: `("apple", "banana", "orange")`
------------------------------------------------------------
92
函数名称: xdrx-string-trim
描述:
该函数用于去除字符串两端的空白字符和不可打印字符。它接受一个或多个字符串作为参数,并返回去除空白字符后的结果。函数会遍历每个输入字符串,移除其前后的空白字符和不可打印字符,并返回修改后的字符串列表。
调用格式:
(xdrx-string-trim <str1> <str2> ...)
参数说明:
- `<str1>`, `<str2>`, ...: 需要处理的原始字符串,可以有多个参数。每个字符串的两端将会被去除空白字符和不可打印字符。
返回值:
返回一个包含去除空白字符和不可打印字符后的字符串列表。
示例用法:
1. 去除字符串两端的空白字符:
(xdrx-string-trim "apple" "banana")
返回: `("apple", "banana")`
2. 去除字符串两端的不可打印字符和空白字符:
(xdrx-string-trim " \t apple \n " " \t banana \n ")
返回: `("apple", "banana")`
------------------------------------------------------------
93
函数名称: xdrx-string-trimleft
描述:
该函数用于去除字符串左侧的空白字符和不可打印字符。它接受一个或多个字符串作为参数,返回去除左侧空白字符后的结果。函数会遍历每个输入字符串,移除其左侧的空白字符和不可打印字符,并返回修改后的字符串列表。
调用格式:
(xdrx-string-trimleft <str1> <str2> ...)
参数说明:
- `<str1>`, `<str2>`, ...: 需要处理的原始字符串,可以有多个参数。每个字符串的左侧将会被去除空白字符和不可打印字符。
返回值:
返回一个包含去除左侧空白字符和不可打印字符后的字符串列表。
示例用法:
1. 去除字符串左侧的空白字符:
(xdrx-string-trimleft "apple" "banana")
返回: `("apple", "banana")`
2. 去除字符串左侧的不可打印字符和空白字符:
(xdrx-string-trimleft " \t apple" " \t banana")
返回: `("apple", "banana")`
------------------------------------------------------------
94
函数名称: xdrx-string-trimright
描述:
该函数用于去除字符串右侧的空白字符和不可打印字符。它接受一个或多个字符串作为参数,返回去除右侧空白字符后的结果。函数会遍历每个输入字符串,移除其右侧的空白字符和不可打印字符,并返回修改后的字符串列表。
调用格式:
(xdrx-string-trimright <str1> <str2> ...)
参数说明:
- `<str1>`, `<str2>`, ...: 需要处理的原始字符串,可以有多个参数。每个字符串的右侧将会被去除空白字符和不可打印字符。
返回值:
返回一个包含去除右侧空白字符和不可打印字符后的字符串列表。
示例用法:
1. 去除字符串右侧的空白字符:
(xdrx-string-trimright "apple" "banana")
返回: `("apple", "banana")`
2. 去除字符串右侧的不可打印字符和空白字符:
(xdrx-string-trimright "apple\t" "banana\t")
返回: `("apple", "banana")`
------------------------------------------------------------
95
函数名称: xdrx-string-unformat
描述:
该函数用于去除多行文本的格式,返回未格式化的字符串或格式化后的字符串列表。它接受两种类型的参数:一种是指定的 MText 实体名称,另一种是已格式化的字符串。如果返回列表,函数会将去除格式的内容按行拆分成列表;如果返回字符串,则返回一个未格式化的单一字符串。
调用格式:
(xdrx-string-unformat <mtext-entity> <formatted-string> <optional t>)
参数说明:
- `<mtext-entity>`: 要处理的 MText 实体名称。如果提供此参数,函数将从 MText 实体中提取内容并去除格式。
- `<formatted-string>`: 如果提供的是字符串,则该字符串将被去除格式并返回。
- `<optional t>`: 可选的布尔值参数。如果值为 `t`,函数将返回格式化后的内容列表。如果未提供或为 `nil`,函数将返回单一的未格式化字符串。
返回值:
- 如果提供了 `t`,返回格式化后的内容列表,每个列表项为一行文本。
- 如果未提供 `t`,返回一个未格式化的字符串。
示例用法:
1. 从 MText 实体获取未格式化的内容并返回列表:
(xdrx-string-unformat "MTextEntityName" nil)
返回: `("Line 1" "Line 2" "Line 3")`
2. 获取已格式化字符串并返回未格式化的内容:
(xdrx-string-unformat nil "This is a formatted text.")
返回: `"This is a formatted text."`
------------------------------------------------------------
96
函数名称: xdrx-string-urlencode
描述:
该函数用于对给定的字符串进行 URL 编码。它会将所有非字母数字字符替换为对应的 URL 编码格式(例如,空格变为 `%20`)。如果输入参数符合要求,函数返回编码后的 URL 字符串。
调用格式:
(xdrx-string-urlencode <string>)
参数说明:
- `<string>`: 要进行 URL 编码的原始字符串。
返回值:
- 返回经过 URL 编码处理的字符串。
示例用法:
(xdrx-string-urlencode "Hello World!")
返回: "Hello%20World%21"
------------------------------------------------------------
97
函数名称: xdrx-string->unicode
描述:
该函数将给定的字符串转换为 Unicode 编码的十六进制表示形式。它首先将输入字符串转换为宽字符(wchar_t),然后将其转换为对应的十六进制字符串,并返回结果。
调用格式:
(xdrx-string->unicode <string>)
参数说明:
- `<string>`: 要转换为 Unicode 编码的原始字符串。
返回值:
- 返回转换后的 Unicode 十六进制表示字符串。
示例用法:
(xdrx-string->unicode "Hello")
返回: "00480065006C006C006F"
------------------------------------------------------------
98
函数名称: xdrx-unicode->string
描述:
该函数将 Unicode 编码的十六进制字符串转换为普通字符串。它首先去除输入字符串中的非十六进制字符,然后将其转换为宽字符,再将宽字符转换回普通字符串。
调用格式:
(xdrx-unicode->string <unicode-hex-string>)
参数说明:
- `<unicode-hex-string>`: 要转换的 Unicode 十六进制字符串。
返回值:
- 返回转换后的普通字符串。
示例用法:
(xdrx-unicode->string "00480065006C006C006F")
返回: "Hello"
------------------------------------------------------------
99
函数名称: xdrx-string-wcmatch
描述:
该函数用于检查两个字符串是否匹配。它支持大小写匹配控制,通过传入的参数来决定是否忽略大小写。
调用格式:
(xdrx-string-wcmatch <string1> <string2> )
参数说明:
- `<string1>`: 第一个要匹配的字符串。
- `<string2>`: 第二个要匹配的字符串。
- `` (可选): 如果提供此参数且值为 t,则在匹配时忽略大小写。
返回值:
- 如果两个字符串匹配,返回 t,否则返回 nil。
示例用法:
(xdrx-string-wcmatch "Hello" "hello" t)
返回: t
------------------------------------------------------------
100
函数名称: xdrx-string-chinese->unicode
描述:
该函数将输入的中文字符串转换为Unicode字符串。如果输入为单个字符串,它将返回一个Unicode字符串;如果输入为字符串列表,则返回Unicode字符串列表。
调用格式:
(xdrx-string-chinese->unicode <string1> [<string2> ...])
参数说明:
- `<string1>`, `<string2>`, ...: 一个或多个中文字符串。
如果只传递一个字符串,则返回转换后的Unicode字符串;如果传递多个字符串,则返回一个Unicode字符串列表。
返回值:
- 单个字符串时返回转换后的Unicode字符串。
- 字符串列表时返回每个字符串转换后的Unicode字符串列表。
示例用法:
(xdrx-string-chinese->unicode "你好")
返回: "你好"的Unicode表示。
(xdrx-string-chinese->unicode "你好" "世界")
返回: ["你好"的Unicode表示, "世界"的Unicode表示]
------------------------------------------------------------
101
函数名称: xdrx-string-regexp
描述:
该函数使用正则表达式对输入字符串进行匹配和替换。根据传入的参数,它可以执行替换操作,也可以返回匹配的结果。支持正则表达式的忽略大小写选项。
调用格式:
(xdrx-string-regexp <regexp> <input-string> [<replace-value>] [<ignore-case>] [<replace-all>])
参数说明:
- `<regexp>`: 要匹配的正则表达式字符串。
- `<input-string>`: 要进行匹配的输入字符串。
- `<replace-value>`: 替换匹配内容的值。若不提供,则只返回匹配的内容,而不进行替换。
- `<ignore-case>`: 可选布尔参数,指示是否忽略大小写,默认为 `FALSE`(不忽略大小写)。
- `<replace-all>`: 可选布尔参数,指示是否替换所有匹配项,默认为 `TRUE`(替换所有)。
返回值:
- 如果进行替换操作,返回替换后的字符串。
- 如果只进行匹配操作,返回一个包含所有匹配结果和分组的列表。列表中的每一项包括匹配的偏移量和匹配的内容。
示例用法:
(xdrx-string-regexp "abc" "abcdef")
返回: `(0 "abc")`
(xdrx-string-regexp "abc" "abcdef" "xyz" TRUE FALSE)
返回: `"xyzdef"`
如果正则表达式匹配失败或发生错误,则返回 `nil`。
------------------------------------------------------------
102
函数名称: xdrx-string-unicode-to-chinese
描述:
该函数将一个或多个Unicode字符串转换为对应的中文字符编码(如GBK或UTF-8),并返回转换后的结果。该函数支持列表和非列表的输入参数。
调用格式:
(xdrx-string-unicode-to-chinese <unicode-string1> <unicode-string2> ...)
参数说明:
- `<unicode-string1>`, `<unicode-string2>`, ...: 一个或多个Unicode字符串,需要转换为中文编码。如果只传递一个字符串且没有后续参数,将返回单个结果;否则,返回包含所有转换结果的列表。
返回值:
- 返回转换后的中文字符编码字符串。如果只有一个结果且不是列表输入,则直接显示转换结果;如果有多个输入,则返回一个包含所有转换结果的列表。
示例用法:
(xdrx-string-unicode-to-chinese "Hello" "World")
返回: `("你好" "世界")`
如果遇到转换失败或其他问题,则返回 `nil`。
------------------------------------------------------------
103
函数名称: xdrx-string-uniquename
描述:
该函数生成一个唯一的名称(通常是UUID格式),并将其作为字符串返回。生成的名称基于系统的UUID(通用唯一标识符),确保每次调用时返回不同的结果。
调用格式:
(xdrx-string-uniquename)
参数说明:
该函数没有输入参数。
返回值:
返回一个唯一的字符串名称,通常是一个基于UUID的名称。
示例用法:
(xdrx-string-uniquename)
返回: `550e8400-e29b-41d4-a716-446655440000`(具体值会有所不同)
------------------------------------------------------------
页:
[1]