朱莉娅:如何将矢量的字符连接在一起([[“ a”,“ b”,“ c”]->“ abc”)

时间:2018-08-28 13:58:49

标签: string character concatenation julia

如何将向量中的字符或字符串连接到一个字符串中,以使[“ a”,“ b”,“ c”]变为“ abc”?

我尝试过使用vcat,hcat,但是似乎没有任何效果...谢谢

答案

join(["a", "b", "c"])

2 个答案:

答案 0 :(得分:1)

有多种方式连接字符串向量:

  • join函数
  • string函数
  • *串联函数

,如各种注释所示。

但是,这些函数的调用签名并不相同。起初我没有注意到这一点,Julia的其他新手可能会喜欢这些细节。

julia> j = join(a)
"abc"

julia> s = string(a...)
"abc"

julia> m = *(a...)
"abc"

# When called correctly all three functions return equivalent results.
julia> j == s == m
true

但是,当像我这样的人不熟悉朱莉娅时,他们可能不会立即意识到(我没有意识到)...string的至关重要性与*函数相比,join和字符串连接函数。

例如:

julia> s2 = string(a)
"[\"a\", \"b\", \"c\"]"

julia> s == s2
false

# or simply:
julia> join(a) == string(a)
false

s = join(a)s2 = string(a)有什么区别?

# Note that join(a) produces a string of 3 letters, "abc".
julia> length(s)
3

# string(a) produces a string of punctuation characters with the letters.
julia> length(s2)
15

julia> s[1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)

julia> s2[1]
'[': ASCII/Unicode U+005b (category Ps: Punctuation, open)

julia> s[1:3]
"abc"

julia> s2[1:3]
"[\"a"

*()的串联功能也与join函数有很大不同:

julia> a = ["a", "b", "c"]
3-element Array{String,1}:
 "a"
 "b"
 "c"

julia> j = join(a)
"abc"

julia> m = *(a)
ERROR: MethodError: no method matching *(::Array{String,1})

julia> m = *(a...)
"abc"

因此,用于将函数应用于一系列参数的“ splat”运算符...string*至关重要,而对{{1} }。

实际上,带有“ splat”运算符的join函数可以执行您可能不需要的操作:

join

答案 1 :(得分:0)

a = ["a", "b", "c"]; string(a...)

join(["a", "b", "c"])