Julia 中处理 ASCII 文本简洁高效,也可以处理 Unicode 。使用 C 风格的字符串代码来处理 ASCII 字符串,性能和语义都没问题。如果这种代码遇到非 ASCII 文本,会提示错误,而不是显示乱码。这时,修改代码以兼容非 ASCII 数据也很简单。
关于 Julia 字符串,有一些值得注意的高级特性:
String
是个抽象类型,不是具体类型
Char
类型代表单字符,是由 32 位整数表示的 Unicode 码位
String
对象的值不能改变。要得到不同的字符串,需要构造新的字符串
Char
表示单个字符:它是 32 位整数,值参见 Unicode 码位 。 Char
必须使用单引号:
julia> 'x' |
'x' |
julia> typeof(ans) |
Char |
Char
转换为对应整数值:
julia> int('x') |
120 |
julia> typeof(ans) |
Int64 |
typeof(ans)
的类型为 Int32
。也可以把整数值转换为 Char
:
julia> char(120) |
'x' |
char
一般不检查其是否有效。如果你想要确保其有效,使用 is_valid_char
函数:
julia> char(0x110000) |
'\U110000' |
julia> is_valid_char(0x110000) |
false |
U+00
至 U+d7ff
,以及从 U+e000
至 U+10ffff
。
可以用单引号包住 \u
及跟着的最多四位十六进制数,或者 \U
及跟着的最多八位(有效的字符,最多需要六位)十六进制数,来输入 Unicode 字符:
julia> '\u0' |
'\0' |
julia> '\u78' |
'x' |
julia> '\u2200' |
'∀' |
julia> '\U10ffff' |
'\U10ffff' |
"..."
或三个双引号 """..."""
中间:
julia> str = "Hello, world.\n" |
"Hello, world.\n" |
julia> """Contains "quote" characters""" |
"Contains \"quote\" characters" |
julia> str[1] |
'H' |
julia> str[6] |
',' |
julia> str[end] |
'\n' |