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在 32 位架构上,
typeof(ans)
的类型为 Int32
。也可以把整数值转换为 Char
:
julia> char(120) 'x'并非所有的整数值都是有效的 Unicode 码位,但为了性能,
char
一般不检查其是否有效。如果你想要确保其有效,使用 is_valid_char
函数:
julia> char(0x110000) '\U110000' julia> is_valid_char(0x110000) false目前,有效的 Unicode 码位为,从
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'