两个子串可以组合成一个吗?

时间:2013-06-05 20:06:32

标签: javascript

在Google的diff_match_patch中,我找到了以下代码:

best_common = shorttext.substring(j - suffixLength, j) +
            shorttext.substring(j, j + prefixLength);

但这不是:

best_common = shorttext.substring(j - suffixLength, j + prefixLength);

如果您想在其自然栖息地中看到此代码,请查看来源:

https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js

寻找673和674行。

2 个答案:

答案 0 :(得分:1)

是的,它们与suffixLength相同,prefixLength保证在您的情况下是非负面的。

答案 1 :(得分:1)

这些在大多数情况下是等效的。但是,有一个边缘情况需要考虑。

对于以下示例,我们假设shorttext == "abcdefghijklmnopqrstuvwxyz"

prefixLengthsuffixLength为否定

允许j = 12prefixLength = -4suffixLength = -5。然后

shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength)
// == "mnopq" + "jkl"
shorttext.substring(j - suffixLength, j + prefixLength)
// == "jklmnopq"