Julia 具有相同文本的Char和String变量的相等性计算
我从csv文件中读取文本条目,并根据存储在数组中的默认值进行测试。在Matlab中,我使用了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
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
,它可以有效地返回字符串的反向视图,而无需复制。