读书人

请问:有个*log的文件中特殊字符的替换

发布时间: 2012-02-17 17:50:42 作者: rapoo

请教:有个*.log的文件中特殊字符的替换问题!请高手指教!(解决后马上给分!多谢了!)
我有一个log文件,里面有些特殊字符,用UltraEdit转换成十六进制是这样的:
CE C4 B5 B5 A8 00 00 00 B3 F6 BF E2 04 00 00 00 CE C4 B5 B5 55 20 20 20

我现在想把00 00 00,包含前面的A8,04;20 20 20前面包含55的替换成回车换行
其中00 00 00和 20 20 20前面的不固定,怎么样才能把整个文件中所包含的都替换了?
也就是要把A8 00 00 00 ;04 00 00 00 ;55 20 20 20 替换成回车换行。

[解决办法]
在UltraEdit里Ctrl+R,勾上正则表达式
查找
?? 00 00 00
替换
0D
全部替换

查找
?? 20 20 20替换
0D
全部替换


[解决办法]
读到一个string中,代替掉20 20 20 and 00 00 00为一个特殊的字符,然后利用他做分隔符号
使用TStringlist将他分隔成多行,然后一个for循环将每一行最后一个字符删除,之后自己再接回去吧,中间添加#13#10就行了。
delphi里面一般不能处理正则表达式
[解决办法]
一个比较笨的办法
i:=pos(chr(0)+chr(0)+chr(0),str);
while i> 0 do
begin
str:=Leftstr(str,i-1)+chr(13)+chr(10)+Rightstr(str,Length(str)-(i+2));
i:=pos(chr(0)+chr(0)+chr(0),str);
end;
i:=pos(chr(32)+chr(32)+chr(32),str);
while i> 0 do
begin
str:=Leftstr(str,i-1)+chr(13)+chr(10)+Rightstr(str,Length(str)-(i+2));
i:=pos(chr(32)+chr(32)+chr(32),str);
end;

读书人网 >.NET

热点推荐