2016-05-05 9 views
1

私はcsvファイルからテキストエントリを読み込み、配列に格納されているデフォルト値に対してテストしています。 Matlabでは私はisequal(w1,w2)を使っていました。しかし、Juliaはより厳密であり、isequalは常にfalseを報告します。なぜ で、私は2つの変数のプロパティを調べました。 CSVファイルのデータの場合、typeof(w2)SubString{ASCIIString}をレンダリングします。 w2[1]レンダリングA; typeof(w2[1])レンダリングChar; length(w2)23をレンダリングします。デフォルトの配列の場合、typeof(w1)Array{ASCIIString,1}をレンダリングします。 w1[1]レンダリングAPP #2 bias voltage [V]; typeof(w1[1])レンダリングASCIIString; length(w1)1をレンダリングします。 したがって、私は一方ではChar変数、もう一方ではString変数を持っているかのように見えます。私は文書を見て、Char-> StringまたはString-> Charから変換関数をオンラインで検索しましたが、見つけられませんでした。 各変数の各テキスト文字をASCII相当の数値コードに変換する必要がありますか?または、文字列の文字をChar配列に詰め込む方法がありますか? ご協力いただければ幸いです。同じテキストのCharとString変数の等価性評価

+1

'マップ(X - > Char(x [1])、x) 'は、あなたのxベクトルから文字を返します – niczky12

+0

ありがとうございます - " z1 = map(w1 - > Char(w1 [1])、w1)配列{Char、1}: 'A' "をレンダリングしますが、" isequal(z1、w2 [1] ) "はまだ"偽 "です 私は何を間違っていますか? ? – JuliaNewbie

+1

私は_ [isequal(w1、w2)] _を使っていたものの代わりに_isequal(w1、[w2])_を使うことができます。ありがとう。 – JuliaNewbie

答えて

2

問題は実際には非常に簡単で、文字列< - > Char変換とは関係ありません。

w1 = ["APP #2 bias voltage [V]"] 

W2は、文字列の種類(ASCIIString大きい単にサブストリング)ではないベクトルである: W1はASCIIStringVector、などすなわちものです。

あなたは簡単に行う必要があります:w1[1] == w2

注:文字列のベクトルと文字列のような2つのものを比較しようとすると、Juliaが何らかの「NotComparableError」を投げた場合は、いいかもしれません。ここで

を使用すると、CSVパーサから取り戻すようにジュリアのプロモーション規則は、異なるタイプの文字列間の比較(ASCIIStringUTF16StringUTF32String、およびSubString{ASCIIString}を処理する方法の例です。

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 
+0

これは素晴らしい、ありがとう! "typeof(w2)"が単に 'string'ではなく 'substring'をレンダリングする理由がなければなりませんか? - 再度、感謝します。 – JuliaNewbie

+0

'SubString'はパラメータ化された型で、大きな文字列のスライスをコピーせずに返します。 'ASCIIString'、' UTF8String'、 'UTF16String'、' UTF32String'のように抽象的な 'AbstractString'のサブタイプです。コピーすることなく、文字列の逆のビューを効率的に返す 'RevString'のように、いくつかのサブタイプがあります(v0.5では削除されることがあります)。 –