element-wise multiplication of string vectors works too, but only if one
vector is of length 1:
julia> @time ["["] .* ["as", "sdf", "qwer"] .* ["]"]
0.000033 seconds (35 allocations: 1.656 KB)
3-element Array{ASCIIString,1}:
"[as]"
"[sdf]"
"[qwer]"
if you prefer this syntax to map or comprehension, extending .* as follows
uses less memory:
julia> import Base.(.*)
julia> (.*){T<:AbstractString}(v::Vector{T},s::T) = [i*s for i in v]
.* (generic function with 36 methods)
julia> (.*){T<:AbstractString}(s::T,v::Vector{T}) = [s*i for i in v]
.* (generic function with 37 methods)
julia> @time "[" .* ["as", "sdf", "qwer"] .* "]"
0.000010 seconds (19 allocations: 1024 bytes)
3-element Array{ASCIIString,1}:
"[as]"
"[sdf]"
"[qwer]"
see https://github.com/JuliaLang/julia/issues/13053