100分:操作文本文件问题:

yjbnew 2004-08-31 01:46:35
文本文件内容:

111111 22222222222 333 4444444444
111112 22222222223 334 4444444445
.........
我怎么把其中的所有空格替换成一个"|",注意是一个“|”!
这里的空格数不是固定的。
...全文
323 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjbnew 2004-09-01
  • 打赏
  • 举报
回复
to linzhengqun(风) :
到底是带五角的,强!
谢了!
也谢谢各位的热心!
接分;
yjbnew 2004-09-01
  • 打赏
  • 举报
回复
谢谢我来试试!
linzhengqun 2004-08-31
  • 打赏
  • 举报
回复
试试这个:
rocedure TForm1.Button1Click(Sender: TObject);
var
list : Tstringlist;
i,count: integer;
s : string;
k : string;
begin
try
list :=Tstringlist.Create;
list.LoadFromFile('c:/1.txt');
s:=list.Text;
i:=length(s);
k:='';
count:=1;
while count<i do
begin
if s[count]=' ' then
begin
k:=k+'|';
inc(count);
while s[count]=' ' do
inc(count);
continue;
end;
k:=k+s[count];
inc(count);
end;
list.Clear;
list.Text:=k;
list.SaveToFile('c:/1.txt');
finally
freeandnil(list);
end;
end;
zjqyb 2004-08-31
  • 打赏
  • 举报
回复
function ReplaceChar(Const S:String):String ;
var oldc:char;
i,len,ct:integer;
begin
oldc:=#0;
len:=length(S);
if len=0 then
exit;
ct:=0;
i:=1;
while (i<=len) and (S[i]=' ') do
inc(i);
if i>len then
exit;
SetLength(ReSult,Len);
while i<=len do
begin
if S[i]<>' ' then
begin
inc(ct);
if oldc=' ' then
begin
ReSult[ct]:='|';
inc(ct);
end;
ReSult[ct]:=S[i];
end;
oldc:=S[i];
inc(i);
end;
Setlength(ReSult,ct);
end;
yjbnew 2004-08-31
  • 打赏
  • 举报
回复
如果用从长到短替换的方法,也是可以的。
不过我不知道该如何替换。VB中有REPLACE函数。
还有,怎么一下子读去所有文字符到内存中?
yjbnew 2004-08-31
  • 打赏
  • 举报
回复
抱歉,空格长度是不固定的。
海天候 2004-08-31
  • 打赏
  • 举报
回复
如果空格长度是固定的,直接替换嘛,先替换最长的空格再替换次长的空格,这样子最快
windy2008 2004-08-31
  • 打赏
  • 举报
回复
UP
来学习学习
yjbnew 2004-08-31
  • 打赏
  • 举报
回复
up
yjbnew 2004-08-31
  • 打赏
  • 举报
回复
如果把相连的空格换成“|”那好办
----------------就是就是。
cdsgajxlp 2004-08-31
  • 打赏
  • 举报
回复
把所有的空格换成一个“|”?
那“|”放在什么位置啊
如果把相连的空格换成“|”那好办
yjbnew 2004-08-31
  • 打赏
  • 举报
回复
TO cdsgajxlp(新手) :
我用你的函数实验了一下,发现所有的空格全部成了“|”!!
dream2001 2004-08-31
  • 打赏
  • 举报
回复
处理速度应该很快的,我以前有做过这方面的。可能在5秒-20秒
yjbnew 2004-08-31
  • 打赏
  • 举报
回复
我这个文本文件大约有10000行,30列,这样处理速度如何?
bigery 2004-08-31
  • 打赏
  • 举报
回复
数组判断,直到最后一个空格再把它转换为1,那样就可以了!记得,是最后一个空格转换!
lwk_hlj 2004-08-31
  • 打赏
  • 举报
回复
楼上说得很完整了!
cdsgajxlp 2004-08-31
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
list : Tstringlist;
i,j : integer;
s : string;
k : string;
begin
try
list :=Tstringlist.Create;
list.Clear;
list.LoadFromFile('c:/1.txt');
for i:=0 to list.Count-1 do
begin
for j:=0 to length(list[i])-1 do
begin
s:=list[i];
if s[j]=' ' then
k:=k+''+'|'+''
else
k:=k+s[j]; ;
end;
s:=k;
list[i]:=s;
end;
list.SaveToFile('c:/1.txt');
finally
freeandnil(list);
end;
end;
smilelhh 2004-08-31
  • 打赏
  • 举报
回复
行读到str,
循环读str,如果不是空格直接加,如果是空格,则加|,如果已经加过|了,则读下一字符
wanghome 2004-08-31
  • 打赏
  • 举报
回复
把该文本读入Tstringlist或TRichtext里,对每行操作如下。
挨个字符读入,遇到空格开始记住,当遇到不为空格时替换,再继续。
或者利用查找替换技术,定义一个空格,两个空格,N个空格。。。。。。,最后查找替换之。
birdhaha 2004-08-31
  • 打赏
  • 举报
回复
逐行读文件,然后对每个字节作判断,如果是空则继续,非空则判断上个字节是否为空,为空则“|”。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧