Reputation: 83
I am using diff method to compare two String's byte arrays but giving unexpected (or is it the expected behavior?) results.
diff()
returns true
for (subString diff originalString)
, but returns false
for (originalString diff subString)
. Would be great if any one can explain this. Code sample & output are given below.
Code snippet
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}")
Output
compare subString with originalString - true
compare originalString with subString - false
Upvotes: 3
Views: 281
Reputation: 97948
diff
is not compare; it is like set difference, "what are the characters that are in the first string but not in the second one?"
"abcd" diff "a" = "bcd"
"a" diff "abcd" = ""
so these are almost equivalent:
"abc".toSet diff "cb".toSet = Set(a)
"abc" diff "cb" = "a"
Upvotes: 5