我有两个字符串,
def str1 = "This is test"
def str2 = "That is test"
我想使用Groovy找到这两个字符串之间的区别。
我尝试了-
运算符,但它似乎无法正常运行。
println 'This is test' - 'That is test'
我希望输出为This That
但是,上面的代码评估为第一个字符串This is test
。我哪里错了?有没有其他方法可以使用Groovy来区分两个字符串?
答案 0 :(得分:1)
String的减号运算符的工作方式不同 - 它会删除部分String。在您的情况下,您得到This is test
因为此String不包含像That is test
这样的子字符串。
如果要获得两个字符串中不同的单词串联,可以对两个字符串进行标记,并将它们转换为一对单词并删除包含相同单词的对。剩下的单词可以与空格字符结合,例如:
def str1 = "This is test"
def str2 = "That is test"
def diff = [str1.tokenize(), str2.tokenize()].transpose() // creates a list of pairs like [["This", "That"], ["is", "is"], ["test", "test"]]
.findAll { it[0] != it[1] } // filters out pairs containing the same word
.flatten() // flats [["This", "That"]] to ["This", "That"]
.join(' ') // creates a final String "This That"
assert diff == 'This That'