TStringList的使用方法,文本操作 ,比较上下行紧挨的几行是不是相同,如果相同,则加a,b,c..区别开来(10分)

  • 主题发起人 主题发起人 文生
  • 开始时间 开始时间

文生

Unregistered / Unconfirmed
GUEST, unregistred user!
如何將
原文件<1>
i
1
3
3
3
32
96
co1
結果:
i
1
3a
3b
3c
32
96
co1
<2>
原文件
5
5
18
20
50
結果
5a
5b
18
20
50


就是相邻的有两个和两个以上相等的就加上,a.b.c.....
 
参考代码:
var
i: Integer;
tmpStr: TStrings;
tmpPreStr: string;
begin
tmpStr := TStringList.Create;
tmpStr.LoadFromFile('c:/1.txt');
for i := 0 to tmpStr.Count - 1 do
begin
if Char(RightStr(tmpStr.Strings[i - 1], 1)) in ['a'..'z'] then
tmpPreStr := LeftStr(tmpStr.Strings[i - 1], Length(tmpStr.Strings[i - 1]) - 1)
else tmpPreStr := tmpStr.Strings[i - 1];
if (i > 0) and (tmpPreStr = tmpStr.Strings) then
tmpStr.Strings := tmpStr.String + Char(Ord(RightStr(tmpStr.Strings[i - 1], 1)) + 1);
end;
end;
 
………………
 
写代码实现就可以了啊,这个问题不难,你自己慢慢想吧。
多用脑子会越来越灵活的。
 
结贴给分吧[:D][:D][:D][:D]
procedure TForm1.Button1Click(Sender: TObject);
var
TmpList : TStringList;
i : integer;
TmpStr : string;
TmpChr : byte;
begin
TmpList := TStringList.Create;
TmpList.LoadFromFile('c:/a.txt');
TmpChr := 97;
for i := 1 to TmpList.Count do
begin
if TmpStr <> TmpList.Strings[i-1] then
begin
TmpChr := 97;
TmpStr := TmpList.Strings[i-1];
end
else
begin
if TmpChr < 122 then inc(TmpChr);
if TmpChr = 98 then TmpList.Strings[i-2] := TmpList.Strings[i-2] + char(TmpChr-1);
TmpList.Strings[i-1] := TmpList.Strings[i-1] + char(TmpChr);
end;
end;
TmpList.SaveToFile('c:/b.txt');
end;
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
898
import
I
I
回复
0
查看
860
import
I
I
回复
0
查看
780
import
I
后退
顶部