首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问:有个*log的文件中特殊字符的替换有关问题!请高手指教!(解决后马上给分!谢谢了!)

2012-02-17 
请教:有个*.log的文件中特殊字符的替换问题!请高手指教!(解决后马上给分!多谢了!)我有一个log文件,里面有

请教:有个*.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;

热点排行