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]
set [differencies v] to []
repeat (length of (str1))
  add (letter (i) of (str1)) to [chars v]
  change [i v] by (1)
end
set [i v] to [1]
repeat (length of (str2))
  if <not <[chars v] contains (letter (i) of (str2)) ?>> then
    set [j v] to [1]
    set [match v] to [0]
    repeat (length of (differencies))
      if <(letter (j) of (differencies)) = (letter (i) of (str2))> then
        set [match v] to [1]
      end
      change [j v] by (1)
    end
    if <(match) = [0]> then
      set [differencies v] to (join (differencies) (letter (i) of (str2)))
    end
  end
  change [i v] by (1)
end
delete (all v) of [chars v]
set [i v] to [1]
repeat (length of (str2))
  add (letter (i) of (str2)) to [chars v]
  change [i v] by (1)
end
set [i v] to [1]
repeat (length of (str1))
  if <not <[chars v] contains (letter (i) of (str1)) ?>> then
    set [j v] to [1]
    set [match v] to [0]
    repeat (length of (differencies))
      if <(letter (j) of (differencies)) = (letter (i) of (str1))> then
        set [match v] to [1]
      end
      change [j v] by (1)
    end
    if <(match) = [0]> then
      set [differencies v] to (join (differencies) (letter (i) of (str1)))
    end
  end
  change [i v] by (1)
end

Compiling the Similarities

A script that reports the similarities in two strings is following:

define compare similarities of [str1] to [str2]
delete (all v) of [chars v]
set [i v] to [1]
set [similarities v] to []
set [match v] to [0]
repeat (length of (str1))
  add (letter (i) of (str1)) to [chars v]
  change [i v] by (1)
end
set [i v] to [1]
repeat (length of (str2))
  if <[chars v] contains (letter (i) of (str2)) ?> then
    set [j v] to [1]
    repeat (length of (similarities))
      if <(letter (j) of (similarities)) = (letter (i) of (str2))> then
        set [match v] to [1]
      end
      change [j v] by (1)
    end
    if <(match) = [0]> then
      set [similarities v] to (join (similarities) (letter (i) of (str2)))
    end
  end
  change [i v] by (1)
end