Nim 中字符串使用 UTF-8 编码。
字符串变量的默认值是 "",即长度为 0 的字符串,空字符串:
var s: stringecho s.len # 输出 0
字符串字面量
经典字符串
Nim 中字符串字面量是用双引号括起来的,字符串中可以带有以\开头的常见转义字符。比如:
var simpleStr = "Hello \t\"YCY\""echo simpleStr# 输出如下:# Hello "YCY"
常见转义字符有:
\t- tab\n- 换行\a- 响铃\\- 斜线\"- 双引号
原生字符串
Nim 支持原生字符串(raw string)。和经典字符串相比,原生字符串
- 以
r"开头,以"结尾 - 忽略转义字符,比如
\t不被当成转义字符,而被当成\和t两个字符
比如:
var rawStr = r"Hello \t"echo rawStr# 输出如下:# Hello \t
原生字符串有一个操蛋的地方,没法表示双引号。
长字符串
Nim 支持长字符串。长字符串以"""开头和结尾。对于原生字符串,
- 可以在字符串内随意换行
- 和原生字符串一样,忽略转义字符
比如:
var longStr = """Hello \t"YCY"-- Rocket Girls"""echo longStr# 输出如下:# Hello \t"YCY"# -- Rocket Girls
字符串长度
Nim 字符串有一个长度。可以通过 len 字段来获取长度,也可以通过 len 函数来获取。比如:
var str: string= "CHINA"echo len(str) # 输出 5echo str.len # 输出 5
需要指出,Nim 字符串和在存储上 C 语言一样,是一个以 0 结尾的字符数组,并且结尾处的 0 不计入字符串长度。
可变字符串
值得注意的是,Nim 字符串本身是可变的(mutable),这点和 Java 等语言不同。比如:
var str: string= "CHINA"echo str # 输出 CHINAecho str.len # 输出 5str.add("!") # 在 str 后面 追加一个叹号echo str # 输出 CHINA!echo str.len # 输出 6
注意,上例中 str 变量本身发生了变化。
字符串连接符
连接多个字符串可以使用操作符 &,此操作符会返回一个新的字符。比如:
var str = "CHINA!"var anotherStr = str & "!" & "!" & "!"echo anotherStr # 输出 CHINA!!!!echo anotherStr == str # 输出 false
比较
把一个字符串变量通过 = 赋值给另一个变量,实际上是做了一次赋值。两个字符串在进行比较时,是直接按字母表顺序比较两个字符串里的内容。
第 i 个字符
注意,索引操作 s[i] 返回的是第 i 个 char,而不是第 i 个 unichar。比如:
var ustr = "川宝" # 以下 4 个 echo 打印的东西亲娘都不认识echo ustr[0]echo ustr[1]echo ustr[2]echo ustr[3]
