3

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 行目を探します。

4

2 に答える 2

1

これらはほとんどの場合同等です。ただし、考慮すべきエッジケースがあります。

次のサンプルでは、shorttext == "abcdefghijklmnopqrstuvwxyz"​​.

prefixLengthまたはsuffixLength負である

j = 12、およびprefixLength = -4としsuffixLength = -5ます。それで

shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength)
// == "mnopq" + "jkl"
shorttext.substring(j - suffixLength, j + prefixLength)
// == "jklmnopq"
于 2013-06-05T20:52:43.850 に答える