Julia:使用split来构造具有多列的字符串数组

时间:2017-08-17 15:04:31

标签: string split julia

我有一个元组,其中包含由#分隔的两条信息,看起来像x = ("aa#b", "a#c", "a#d")。我可以使用理解以下列方式将此数据转换为数组[split(x[i], "#")[j] for i in 1:length(x), j in 1:2]

然而,这似乎效率低下,因为我有效地运行了split命令两次。有没有一种处理这种情况的首选方法?

谢谢

2 个答案:

答案 0 :(得分:3)

function hashsplit(x)
       out = Array{SubString{String},2}(2,length(x))
       for (ind,j) in enumerate(x)
           out[:,ind] = split(j,"#")
       end
       return out
end

应该更快。另外,列表理解的简单方法是

[(split(x[i], "#")...) for i in eachindex(x)](对于元组的向量)

如果您需要矩阵,请

cat(2,ans...)reduce(hcat, ans)

答案 1 :(得分:1)

尽管这是一个老问题,但这是我建议的解决方案

String.(reduce(hcat,split.(a,'#')))

我用@time运算符检查过。与亚历山大提出的列表理解方法0.042378 seconds (90.93 k allocations: 4.330 MiB)相比, 与提出的解决方案进行相同操作所需的时间为0.000028 seconds (34 allocations: 1.500 KiB)