2017-06-01 14 views
3

私はdiffメソッドを使用して2つのStringのバイト配列を比較していますが、予期せぬ結果が得られましたか?scala Array [Byte] diff

diff()戻り(subString diff originalString)ためtrueが、(originalString diff subString)ためfalseを返します。もし誰かがこれを説明できれば素晴らしいだろう。コードサンプル&の出力を以下に示します。

コードが出力

compare subString with originalString - true 

compare originalString with subString - false 

答えて

5

diffを比較しないで

val subString : Array[Byte] = "cde".getBytes("UTF-8") 
val originalString : Array[Byte] = "abcdefg".getBytes("UTF-8") 

println(s"compare subString with originalString - ${((subString diff originalString).isEmpty).toString}") 
println(s"compare originalString with subString - ${((originalString diff subString).isEmpty).toString}") 

をスニペット。それはセットの違いのようなものです。「最初の文字列にある文字は何ですか?2番目の文字列にはない文字は何ですか?」

"abcd" diff "a" = "bcd" 
"a" diff "abcd" = "" 

ので、これらはほとんど等価です:

"abc".toSet diff "cb".toSet = Set(a) 
"abc" diff "cb" = "a" 
関連する問題