fpc : 连续2个以上的空格替换成1个空格

最简单的shell 命令: cat tmp.txt |tr -s ' ' > tmp2.txt

我们先看看 python 的写法: 

space1.py

# -*- coding: cp936 -*-
import os, sys
import re

if len(sys.argv) ==2:
    f1 = sys.argv[1]
else:
    print 'usage: space1.py file1.txt '
    sys.exit(1)

if not os.path.exists(f1):
    print 'ERROR: %s not found\n' % f1
    sys.exit(1)

fp = open(f1,'rt')
f2 = f1 +'.bak'
fp2 = open(f2,'w')
aline =''
for line in fp:
    aline = re.sub(r'[ ]{2,}',' ',line)
    fp2.write(aline)
#
fp.close()
fp2.close()


我们看看free pascal 写法:

space1.pas

Program space1;
{$mode objfpc}{$H+}
uses sysutils;
Var
  f1,f2:text;
  str,str2:string;
  ln:integer;
Begin
  if ParamCount =1 then
    begin
	AssignFile(f1,ParamStr(1));
	AssignFile(f2,ParamStr(1)+'.bak');
    end
  else begin
	if ParamCount =2 then
	  begin
	  Assign(f1,ParamStr(1));
	  Assign(f2,ParamStr(2));
	  end
    else begin
	  writeln(' usage: readfile file1.txt ');
	  writeln(' usage: readfile file1.txt file2.bak ');
	  exit;
	end;
  end;
  ln:=0;
  Reset(f1);
  Rewrite(f2);
  while not eof(f1) do
  begin
	ln:=ln+1;
	readln(f1,str);
	if length(str)>0 then
	begin
	  while Pos('  ',str)>0 do
	  begin
	    str := StringReplace(str,'  ',' ',[rfReplaceAll]);
	  end;
	  str2 := str;
	  writeln(f2,str2);
    end;
  end;
  CloseFile(f2);
  CloseFile(f1);
  writeln('line number: ',ln);
End.


编译 fpc space1.pas

运行 space1.exe  tmp.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值