Julia 具有相同文本的Char和String变量的相等性计算

Julia 具有相同文本的Char和String变量的相等性计算,julia,Julia,我从csv文件中读取文本条目,并根据存储在数组中的默认值进行测试。在Matlab中,我使用了isequal(w1,w2);然而,Julia更严格,而且isequal总是报告false。在里面 为了找出原因,我研究了这两个变量的属性。对于来自csv文件的数据,typeof(w2)呈现SubString{ascistring}w2[1]呈现A类型(w2[1])呈现字符;和length(w2)渲染23。对于默认数组,typeof(w1)呈现array{ascistring,1}w1[1]呈现应用程序2

我从csv文件中读取文本条目,并根据存储在数组中的默认值进行测试。在Matlab中,我使用了
isequal(w1,w2)
;然而,Julia更严格,而且
isequal
总是报告
false
。在里面 为了找出原因,我研究了这两个变量的属性。对于来自csv文件的数据,
typeof(w2)
呈现
SubString{ascistring}
w2[1]
呈现
A
<代码>类型(w2[1])呈现
字符
;和
length(w2)
渲染
23
。对于默认数组,
typeof(w1)
呈现
array{ascistring,1}
<代码>w1[1]呈现
应用程序2偏置电压[V]
<代码>类型(w1[1])呈现
ascistring
;和
length(w1)
呈现
1
。 看起来我一方面有一个Char变量,另一方面有一个String变量。我查阅了文档并在网上搜索了Char->String或String->Char中的转换函数,但没有找到。 我是否应该将每个变量中的每个文本字符转换为其ASCII等效数字代码,然后计算等效性?或者有没有办法将字符串文本字符填充到字符数组中?
感谢您的帮助

问题其实很简单,与字符串字符转换无关。 w1是一个
向量
,属于
ascistring
,例如:

w1 = ["APP #2 bias voltage [V]"]
w2是一种字符串类型(只是较大的
ascistring
的子字符串),而不是向量

您只需执行以下操作:
w1[1]==w2

注意:如果Julia抛出某种“NotComparableError”,当您尝试比较字符串向量和字符串这两种东西时,这可能会很好

下面是Julia的升级规则如何处理不同类型字符串之间的比较的示例(
ascistring
UTF16String
UTF32String
,以及
SubString{ascistring}
),就像您从CSV解析器得到的:

julia> wasc = "APP #2 bias voltage [V]"
"APP #2 bias voltage [V]"
julia> w16 = utf16("APP #2 bias voltage [V]")
"APP #2 bias voltage [V]"
julia> w32 = utf32("APP #2 bias voltage [V]")
"APP #2 bias voltage [V]"
julia> wsub = SubString(wasc,1,length(wasc))
"APP #2 bias voltage [V]"
julia> wvec = ["APP #2 bias voltage [V]"]
1-element Array{ASCIIString,1}:
 "APP #2 bias voltage [V]"
julia> wvec == wsub
false
julia> wvec[1] == wsub
true
julia> wvec[1] == w16
true
julia> wvec[1] == w32
true
julia> typeof(w32)
UTF32String

map(x->Char(x[1]),x)
将返回x向量中的字符。非常正确,谢谢--“z1=map(w1->Char(w1[1]),w1)”结果是:“typeof(z1)”呈现“数组{Char,1}”,而“z1”呈现“1元素数组{Char 1}:'A'。但是,“isequal(z1,w2[1])”仍然是“false”。我做错了什么?我可以使用isequal(w1,[w2]))而不是我一直在使用的[isequal(w1,w2)]。谢谢。这太棒了,谢谢!!一定是有原因“typeof(w2)”呈现“substring”而不仅仅是“string”?--再次感谢。
substring
是一种参数化类型,用于返回较大字符串的片段,而无需复制。例如
ascistring
UTF8String
UTF16String
UTF32String
它是抽象
AbstractString
的子类型下面是一些其他子类型(有些可能在v0.5中被删除),如
RevString
,它可以有效地返回字符串的反向视图,而无需复制。