首页 > 解决方案 > 朱莉娅:我如何将一个字符串切割成一个数组{String}?

问题描述

我有一个超长的字符串(想想数百万个字母),我想把它切成一个给定长度数组的字符串数组。例如

string1 = "abcdefgh"

split_into_array(string1, lengths) = ....

这样

split_into_array("abcdefgh", [2,3,1,2])

应该给

["ab", "cde", "f", "gh"]

另外,我不再需要原始字符串,所以最好是无副本解决方案。

标签: arraysstringjulia

解决方案


您可以使用字符串切片:

function split_into_array(str::String, len::Array{Int})
  j = 1
  r = Array{String}(undef, length(len))
  for (i, n) in enumerate(len)
    r[i] = str[j:j + n - 1]
    j += n
  end
  return r
end

@show split_into_array("abcdefgh", [2, 3, 1, 2])

输出:

split_into_array("abcdefgh", [2, 3, 1, 2]) = ["ab", "cde","f", "gh"]

推荐阅读