字符串常量

简介: 字符串常量

我们可以使用一对双引号单引号来声明字符串常量(literal string):

a = "a line"
b = 'another line'


使用双引号和单引号声明字符串是等价的。他们两者唯一的区别在于,使用双引号声明的字符串中出现单引号时,单引号可以不用转义;使用单引号声明的字符串中出现双引号时,双引号可以不用转义。


从代码风格上看,大多数程序员会选择使用相同的方式来声明"同一类"字符串,至于"同一类"究竟具体指什么则是依赖于具体实现的。比如,由于 XML 文本中一般都会有双引号,所以一个操作 XML 的库可能就会使用单引号来声明 XML 片段。


Lua 语言中的字符串支持下列 C 语言风格的转义字符

转义字符 含义
\a 响铃(bell)
\b 退格(back space)
\f 换页(form feed)
\n 换行(newline)
\r 回车(carriage return)
\t 水平制表符(horizontal tab)
\v 垂直制表符(vertical tab)
\ 反斜杠(backslash)
\" 双引号(double quote)
\' 单引号(single quote)


下述示例展示了转义字符的使用方法:

> print("one line\nnext line\n\"in quotes\", 'in quotes'")
one line
next line
"in quotes", 'in quotes'
> print('a backslash inside quotes: \'\\\'')
a backslash inside quotes: '\'
> print("a simpler way: '\\'")
a simpler way: '\'


在字符串中,还可以通过转义序列 \ddd\xhh 来声明字符,其中, ddd 是由最多 3十进制数字组成的序列, hh 是由两个且必须是两个十六进制数字组成的序列。举一个稍微有点刻意的例子,在一个使用 ASCII 编码的系统中, "ALO\n123"'\x41L0\10\04923"' 实际上是一样的: 0x41 (十进制的 65 )在 ASCII 编码中对应 A10 对应换行符49 对应数字 1 (在这个例子中,由于转义序列之后紧跟了其他的数字,所以 49 必须写成 \049 ,即用 0补足三位数字,否则, Lua 语言会将其错误地解析为 \492 )。我们还可以把上述字符串写成 '\x41\x4c\x0a\x31\x32\x33\x22' ,即使用十六进制来表示字符串中的每一个字符。


Lua5.3 开始,也可以使用转义序列 \u{h...h} 来声明 UTF-8 字符,花括号中可以支持任意有效的十六进制

> "\u{3b1} \u{3b2} \u{3b3}"   --> α β γ


提示

终端使用 UTF-8 编码才能正确输出

目录
相关文章
|
8月前
|
存储 C++
c++字符和不常见常量
c++字符和不常见常量
64 0
类型转换字符的使用
类型转换字符的使用
57 0
0 和 1 的字面量
Julia 中,数据类型涵盖整数和浮点数,字面量表示固定值。`zero(x)` 和 `one(x)` 函数返回x类型对应的0和1,减少类型转换成本。例如: ```markdown julia> zero(Float32) # Float32的0 0.0f0 julia> one(Int32) # Int32的1 1 ```
|
4月前
|
JavaScript 前端开发
字面量
【9月更文挑战第04天】
49 2
|
5月前
|
C++
【学习笔记】【C/C++】 c++字面值常量
【学习笔记】【C/C++】 c++字面值常量
48 1
|
7月前
类型转换字符f的使用
【6月更文挑战第24天】类型转换字符f的使用。
39 4
|
8月前
|
存储 Java 编译器
字符串常量和字符串字面值
字符串常量和字符串字面值
158 1
|
8月前
|
存储 C语言
字符指针变量与字符数组的比较
字符指针变量与字符数组的比较
66 3
|
8月前
|
存储 Java 编译器
字符串常量和字符串字面值:区别与联系
字符串常量和字符串字面值:区别与联系
|
8月前
|
C语言
C语言常量与变量、字符串与转义字符
C语言常量与变量、字符串与转义字符
60 0