4.6 字符与字符串的转换

本节介绍用于在字符、字符串和整数之间进行转换的函数。format(see 格式化字符串)和 prin1-to-string(see 输出函数)也可将 Lisp 对象转换为字符串。read-from-string(see 输入函数)能够将 Lisp 对象的字符串表示形式转换为对象。string-to-multibytestring-to-unibyte 函数用于转换字符串的文本编码形式(see Converting Text Representations)。

有关生成文本字符和通用输入事件的文本描述的函数,see Documentationsingle-key-descriptiontext-char-description)。这些函数主要用于生成帮助信息。

Function: number-to-string number

该函数返回一个字符串,内容为数字 number 的十进制打印形式。若参数为负数,返回值以负号开头。

(number-to-string 256)
     ⇒ "256"
(number-to-string -23)
     ⇒ "-23"
(number-to-string -23.5)
     ⇒ "-23.5"

int-to-string 是该函数的半废弃别名。

另请参见《格式化字符串》章节中的 format 函数。

Function: string-to-number string &optional base

该函数返回字符串 string 中字符对应的数值。若 base 非-nil,则其必须是 2 到 16(包含边界)之间的整数,此时将按该进制转换整数。若 basenil,则使用十进制。浮点数值转换仅支持十进制;我们未实现其他进制的浮点数转换,因为这需要大量额外工作,且实用性不高。

解析过程会跳过 string 开头的空格和制表符,然后读取 string 中能被解释为指定进制数字的最长部分。(在部分系统中,会忽略开头的其他空白字符,而非仅空格和制表符。)若 string 无法被解释为数字,该函数返回 0。

(string-to-number "256")
     ⇒ 256
(string-to-number "25 is a perfect square.")
     ⇒ 25
(string-to-number "X256")
     ⇒ 0
(string-to-number "-4.5")
     ⇒ -4.5
(string-to-number "1e5")
     ⇒ 100000.0
Function: char-to-string character

该函数返回一个新字符串,其中包含单个字符 character。由于 string 函数的功能更通用,此函数已半废弃。See 创建字符串

Function: string-to-char string

该函数返回字符串 string 的第一个字符。其功能基本等同于(aref string 0),区别在于若字符串为空,该函数返回 0(当 string 首个字符为空字符(ASCII 码 0)时,返回值同样为 0)。若该函数的实用性不足以保留,未来可能会被移除。

以下是其他可用于字符串转换的函数:

concat

将向量或列表转换为字符串。 See 创建字符串

vconcat

将字符串转换为向量。 See 向量相关函数

append

将字符串转换为列表。 See 构建 cons 单元与列表

byte-to-string

将一个字节的字符数据转换为单字节字符串。 See Converting Text Representations


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike