// 滑动窗口在原始文件中寻找匹配块 for i := 0; i <= len(contentLines)-len(oldLines); i++ { isMatch := true for j := 0; j < len(oldLines); j++ { if strings.TrimSpace(contentLines[i+j]) != oldLines[j] { isMatch = false break } } if isMatch { matchCount++ matchStartIndex = i matchEndIndex = i + len(oldLines) } }
这里的匹配规则是不是有问题呢?这个匹配方法,仅仅能匹配到oldLines中的一行,如果多行匹配到,则就报错了,预期不是匹配整个oldText吗?
麦耀锋
2026-05-06来自广东
我觉得缩进这个问题挺复杂的,目前并没有好的思路能解决所有问题,举两个例子:
例子1:oldText中本身就有问题,比如本身的缩进就有问题,那么你以oldText的基础缩进前缀就没有任何参考意义
例子2:将下面:
if a < 5 {
b = 2
c= 4
}
改为:
if a < 5 {
b = 2
}
实际上大模型有可能会告知这个:
oldText = '<space><space> c = 4\n}\n'
newText = '}\n'
在这种情况下,实际上缩进是不需要特殊处理,因为两者的“第一行”不是同一个概念。