## 各种文本处理方法的作用和用法 >一般在Hook模式下,有时会读取到错误的文本,例如有重复的文本,或者其他乱七八糟的文本,这时需要使用文本处理来解决 >如果有非常复杂的错误形式,可以通过激活多种处理方式,并调整他们的执行顺序来得到丰富的处理方法组合 1. #### 过滤文本中的非日语字符集字符 有时,会hook到一些乱码文本。由于一般是日语游戏会出现这个问题,因此预设了这个方法,来过滤掉**无法使用shift-jis字符集编码的字符**,例如: `エマさんԟのイԠラストは全部大好き!` 会被处理成 `エマさんのイラストは全部大好き!` 1. #### 过滤控制字符 这个方法会过滤掉文本中的ascii码控制符,例如``等 1. #### 过滤英文标点 这个方法会过滤掉文本中```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~``` 1. #### 过滤其他乱码 这个需要在设置中,设置允许通过的字符编码,或Unicode范围。不被允许的字符将均被过滤 1. #### 过滤「」以外的字符 例如:`こなみ「ひとめぼれってやつだよね……」` 将被处理为 `「ひとめぼれってやつだよね……」` 1. #### 去除花括号{} 这个和字面意思不太一样,其实主要是用来过滤日语注音的,许多游戏脚本使用{}和一些其他字符来给汉字加注音。支持两种注音格式:`{汉字/注音}`和`{汉字:注音}`,例如: `「{恵麻/えま}さん、まだ{起き/おき}てる?」` 或 `「{恵麻:えま}さん、まだ{起き:おき}てる?」` 将被处理成 `「恵麻さん、まだ起きてる?」` 1. #### 截取指定行数 该方法会截取**截取行数**所指定的行数。 如果激活了**截取末尾**,则会截取末尾的指定行数文本。 1. #### 去除重复字符_AAAABBBBCCCC->ABC 这个是最常用的过滤器。 由于游戏的文字有时会绘制一遍文字在绘制一遍阴影再绘制一遍描边等之类的原因,Hook模式会多次提取到被重复绘制的字符。例如`恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。`,这个方法会将他处理成`恵麻さんは再び液タブへ視線を落とす。`。默认的重复次数是`1`会自动分析重复的字数,但也有分析的不准确的情况,建议指定一个确定的重复字数。 1. #### 过滤历史重复LRU 有时,游戏重复绘制的方式不是逐个字符的,而是逐行一起绘制,而且同时很变态的是会在静态的情况下不停的重新绘制当前显示的文本。例如假设当前显示的是两行文本`你好`和`哈哈`,如果不使用这个方法,将会反复输出`你好哈哈你好哈哈你好哈哈你好哈哈……`。使用这个方法,缓存若干条近期输出过的文本,当有缓存满时且出现新的文本时,剔除掉缓存中最早的那条文本,从而使近期的文本不会反复刷新。 1. #### 去除重复行_ABCDABCDABCD->ABCD 这个也比较常见,和上面的类似,只不过一般不会反复刷新,而是快速的一次刷新多次。效果为 `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。` 会变成`恵麻さんは再び液タブへ視線を落とす。`。同样,默认的重复次数是`1`会自动分析重复的字数,但也有分析的不准确的情况,建议指定一个确定的重复字数。 1. #### 去除重复行_S1S1S1S2S2S2->S1S2 这个相对比较复杂,有时每个句子的刷新次数是不完全一样的,这时只能完全由程序分析来决定如何去重。例如`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。`, 其中`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。`重复了3次,`なんてニヤニヤしていると、恵麻さんが振り返った。`没有重复,`私は恵麻さんの目元を優しくハンカチで拭う。`重复了2次,最终经过分析将得到`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。`,其中因为过于复杂,会存在少许的分析错误,这也是无法避免的,但一般都能基本正确的得到结果。 1. #### 过滤尖括号<> 这个实际上是过滤HTML标签,怕小白不知道是什么意思所以这么写的名字。例如`