Julia 将 String 转换为 Char,或将 Array{SubString{String},1} 转换为 char

Al *_*Bro 4 string char julia

我想将子字符串数组转换为 Char 或 String 值。

我拆分了一个字符串以获得一个元素数组

mdSplit = split(mdSub,r"[ ]+")
4-element Array{SubString{String},1}:
 "73"
 "G" 
 "T" 
 "" 
Run Code Online (Sandbox Code Playgroud)

但现在我想遍历这个数组,如果值是一个字符,我要把那个字符转换成一个字符,或者把它作为一个字符复制一个已经尝试过转换和解析

convert(Char,string(mdSplit[2]))
Run Code Online (Sandbox Code Playgroud)

Jak*_*sen 5

首先,您可能需要重新考虑是否真的需要 String 和 Char 数组。拥有一个只有一种元素类型的数组不是更好吗?

无论如何,您可以将 SubString 转换为 String 或 Char,如下所示:

function string_or_char(s::SubString)
    length(s) == 1 && return first(s)
    return String(s)
end
Run Code Online (Sandbox Code Playgroud)

请注意,此函数类型不稳定。然后将其放入一个数组中,如下所示:

arr = Union{Char,String}[]
for i in split_string
    push!(arr, string_or_char(i))
end
Run Code Online (Sandbox Code Playgroud)

或者,您可以像这样创建数组: [string_or_char(s) for s in split_string]。但这本身类型不稳定,并且可以返回Vector{Char},Vector{String}或 中的任何一个Vector{Any}


rap*_*ite 5

only() 似乎是正确的方法:

julia> string_a = "a"
"a"

julia> char_a = only(string_a)
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
Run Code Online (Sandbox Code Playgroud)

其他解决方案:

mdSplit[2][1]mdSplit[2][end]first(mdSplit[2])last(mdSplit[2])

都将 1 大小的字符串更改为字符。