【问题标题】:How to convert string to array with no spaces如何将字符串转换为没有空格的数组
【发布时间】:2022-11-16 19:56:39
【问题描述】:

有关的:

How to convert from string to array?

这是一个后续问题。我将如何列出该数字中的所有数字(当前为字符串)?

"123" -> [1,2,3]

这里没有分隔符,所以我应该怎么做呢?

请注意,截至目前我使用的是最新版本的 Julia,v1.8.3 所以 parse 似乎在其他问题的答案中不起作用。使用parse()时出错:

ERROR: LoadError: MethodError: no method matching parse(::SubString{String})
Closest candidates are:
  parse(::Type{T}, ::AbstractString) where T<:Complex at parse.jl:381
  parse(::Type{Sockets.IPAddr}, ::AbstractString) at ~/usr/share/julia/stdlib/v1.8/Sockets/src/IPAddr.jl:246
  parse(::Type{T}, ::AbstractChar; base) where T<:Integer at parse.jl:40
  ...
Stacktrace:
 [1] iterate
   @ ./generator.jl:47 [inlined]
 [2] _collect
   @ ./array.jl:807 [inlined]
 [3] collect_similar
   @ ./array.jl:716 [inlined]
 [4] map
   @ ./abstractarray.jl:2933 [inlined]
 [5] top-level scope
   @ ~/proc/self/fd/0:1
in expression starting at /proc/self/fd/0:1
exit status 1

【问题讨论】:

    标签: arrays string julia


    【解决方案1】:
    1. 像这样简单易行:

      function str2vec(s::String)
          return map(x->parse(Int,x), split(s,""))
      end
      
      julia> str2vec("124")
      3-element Vector{Int64}:
       1
       2
       4
      
    2. 或者通过广播:

      julia> parse.(Int, split("124",""))
      3-element Vector{Int64}:
       1
       2
       4
      
    3. 通过管道功能:

      julia> "124" |> x->split(x, "") |> x->parse.(Int, x)
      3-element Vector{Int64}:
       1
       2
       4
      
    4. 利用 eachsplit 函数,这是一个惰性函数并返回一个生成器对象(在 Julia 1.8 中引入):

      julia> eachsplit("124", "") |> x->parse.(Int, x)
      3-element Vector{Int64}:
       1
       2
       4
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多