我们在汉化翻译的时候经常会碰到翻译后的文本导入游戏后,游戏崩溃的现象。* }/ b4 @1 l3 x; h2 p: p3 c* t% n: W
其实,如果巧妙地利用折半查找法,只需要12次左右即可快速找到那些非法字符。/ [% J0 w3 V' m1 i6 s0 Y/ i! f. V
假设A.txt是原文文本 共4000行,B.txt是会崩溃的译文文本 共4000行。: }7 i0 K0 j$ }! Z& ]& W! a
第1次,我们取出A.txt的1-2000行和B.txt的2001-4000行,组合为一个新的字幕文件。
' r6 E8 ?2 J; A( t8 Z. [( r导入游戏后如果出错,说明在B.txt的2001-4000行有非法字符。
# m0 N$ F, U3 ^, f1 Y; j. f2 V8 H
第2次,我们取出A.txt的1-2000行,B.txt的2001-3000行,A.txt的3001-4000行。
. N! A: U: V, ]. ~导入游戏后如果还是出错,说明在B.txt的2001-3000行有非法字符。9 @. L0 ]& V1 I/ c6 h
Z7 M2 z. L' s, M
如此不断折半缩小范围,很快就能定位到一行上,找到非法字符一般只需要12次左右。
6 f& c+ B% |0 o9 r当然,文本里有问题的地方可能不止一行,但是找到一行以后,找出原因后就可以用替换等方法修正所有行的问题。 |