我有一个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 替换成回车换行。

解决方案 »

  1.   

    在UltraEdit里Ctrl+R,勾上正则表达式
    查找
    ?? 00 00 00
    替换
    0D
    全部替换查找
    ?? 20 20 20替换
    0D
    全部替换
      

  2.   

    chenzhuo(睡到自然醒) ,这样做吗?
    sStringReplace(s,#$??#$20#$20#$20,#13#10,[rfReplaceAll]);
      

  3.   

    我是想在程序中替换,不是在UltraEdit中替换
      

  4.   

    读到一个string中,代替掉20 20 20 and 00 00 00为一个特殊的字符,然后利用他做分隔符号
    使用TStringlist将他分隔成多行,然后一个for循环将每一行最后一个字符删除,之后自己再接回去吧,中间添加#13#10就行了。
    delphi里面一般不能处理正则表达式
      

  5.   

    一个比较笨的办法 
    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;