Julia 字符串连接
2018-09-19 本文已影响48人
Julia语言
微信公众号:Julia语言
每周一三五更新Julia语言;
每周二四六更新Python进阶;
字符串连接
字符串连接是最常用的操作:
julia> greet = "Hello"
"Hello"
julia> whom = "world"
"world"
julia> string(greet, ", ", whom, ".\n")
"Hello, world.\n"
重要的是要注意潜在的危险情况,例如无效的UTF-8字符串的连接。 结果字符串可能包含与输入字符串不同的字符,并且其字符数可能低于连接字符串的字符数之和,例如:
julia> a, b = "\xe2\x88", "\x80"
("\xe2\x88", "\x80")
julia> c = a*b
"∀"
julia> collect.([a, b, c])
3-element Array{Array{Char,1},1}:
['\xe2\x88']
['\x80']
['∀']
julia> length.([a, b, c])
3-element Array{Int64,1}:
1
1
1
只有无效的UTF-8字符串才会出现这种情况。 对于有效的UTF-8字符串,串联保留字符串中的所有字符以及字符串长度的可加性。
Julia 允许使用 *
来连接字符串文本:
julia> greet * ", " * whom * ".\n"
"Hello, world.\n"
虽然*
对于为字符串连接提供+
的语言的用户来说似乎是一个令人惊讶的选择,但这种*
的使用在数学方面具有先例,特别是在抽象代数中。
在数学中,+
通常表示可交换操作,其中操作数的顺序无关紧要。 这种情况的一个例子是矩阵加法,其中对于具有相同形状的任何矩阵A和B,A + B == B + A
. 相反,*
通常表示非交换操作,其中操作数的顺序很重要。 一个例子是矩阵乘法,其中一般A * B!= B * A
.与矩阵乘法一样,字符串连接是非交换的:问候* who!= who * greet
。 因此,对于中缀字符串连接运算符来说,*
是更自然的选择,与常见的数学用法一致。

点击阅读原文可查看历史文章