字符串字面量、字符字面量¶
开头和结尾
'
字符字面量"
字符串字面量`
格式化字符串字面量'''
原始字符串字面量"""
多行字符串字面量```
多行格式化字符串字面量
反斜杠转义¶
使用反斜杠进行转义,转义序列忽略大小写
除原始字符串字面量外都可以使用转义
原始 | 字符 | 八进制 | 十六进制 | 解释 |
---|---|---|---|---|
\0 |
NUL | 000 | 00 | 字符串结束 |
\a |
BEL | 007 | 07 | 响铃 |
\b |
BS | 010 | 08 | 退格 |
\e |
ESC | 033 | 1b | 转义 |
\f |
FF | 014 | 0c | 换页 |
\n |
LF | 012 | 0a | 换行 |
\r |
CR | 015 | 0d | 回车 |
\t |
TAB | 011 | 09 | 水平制表符 |
\v |
VT | 013 | 0b | 垂直制表符 |
\x |
- | - | - | 十六进制转义 |
\u |
- | - | - | Unicode 转义 |
\000
八进制转义 (三位八进制数,可省略前导0)
如:\0
表示空字符,\033
表示 ESC\x00
十六进制转义 (两位十六进制数)
如:\x20
表示空格,\x1b
表示 ESC\u0000
Unicode 转义 (四或六位十六进制数,可省略前导0)
如:\u0020
表示空格,\u001b
表示 ESC
\
加其它字符则忽略 \
本身,如 \'
表示 '
字符
格式化表达式¶
使用类似 shell 的格式化写法,使用 $变量名
${表达式}
${表达式@格式修饰符}
三种形式。
与其它情况下大括号表示代码块不同,此处大括号内为单个表达式,表达式也不可以换行。
`$a + $b = ${a + b}`
`Pointer ptr is: ${ptr@p}`
要在格式化字符串中表示 $
可以使用 $$
进行转义。
`The price is $$100.`
非法的序列中 $
会被保留。
`$ $ $`
格式修饰符¶
格式修饰符以 @
开头,后接修饰符名称,修饰符名称不区分大小写。
原始字符串¶
原始字符串以 '''
开头和结尾,开头的 '''
后必须换行,结尾的 '''
前必须换行。
原始字符串中不能使用转义序列。
'''
line1
line2
line3
''' // 结尾的行前不能有空格
被解析为:
line1
line2
line3
如果不换行会导致报错:
'''line1
line2
line3'''
原始字符串后也可以跟数量不等的括号用于自定义开头和结尾,但必须成对出现。
'''([{<
正文
>}])'''
多行字符串¶
多行字符串和单行字符串类似,只是使用 """
或 ```
包裹字符串。
新行以 |
开头,续行以 +
开头,添加空格并续行以 *
开头。
""" | line1
| line2
| line3
"""
使用 +
时需要多打一个空格来使单词之间分割,但使用 *
时不需要。
""" | This is the
+ first line.
| This is the second line.
"""
""" | This is the
* first line.
| This is the second line.
"""
以上两个均被解析为
This is the first line.
This is the second line.
也可以正常使用格式化表达式。
``` | $a + $b = ${a + b}
| $c + $d = ${c + d}
```
字符串必须跨行