From Test-Scratch-Wiki

Translate: - English - 中文 

Comparing strings is the process of analyzing and outputting the differences or similarities between two strings. Comparing strings has many uses:

  • Checking differences or similarities in a user response and the correct answer
  • Analyzing the different responses from users inputted by Cloud Data on a form project
  • Parsing lines of code

Compiling the Differences

Two variables may typically have differences in characters. For example, of variable 1 has a value of "potato" and variable 2 has a value of "tomato" the differences would be "pm" because those are the characters not shared by both variables. Only variable 1 contains a "p" and oinly variable 2 contains an "m". The following custom block analyzes the two strings specified by the block definition's parameters and compiled a variable of characters unshared between the two variables.

define compare differences of [str 1] to [str 2]
delete [all v] of [chars v]
set [i v] to [1]
repeat (length of (str 1))
add (letter (i) of (str 1)) to [chars v]
change [i v] by (1)
end
set [differences v] to [] //will contain all unshared characters
set [i v] to (1)
repeat (length of (str 2))
if <not <[chars v] contains (letter (i) of (str 2))>>
set [differences v] to (join (differences) (letter (i) of (str 2)))
change [i v] by (1)
end
end

Compiling the Similarities

Programming a variable that reports the similarities in two strings is only slightly changed.

define compare similarities of [str 1] to [str 2]
delete [all v] of [chars v]
set [i v] to [1]
repeat (length of (str 1))
add (letter (i) of (str 1)) to [chars v]
change [i v] by (1)
end
set [similarities v] to [] //will contain all shared characters
set [i v] to (1)
repeat (length of (str 2))
if <[chars v] contains (letter (i) of (str 2))> // this is the change
set [similarities v] to (join (similarities) (letter (i) of (str 2)))
change [i v] by (1)
end
end