我有一个文本内容如下:
11
22
33
44
55
11
22
66
77
88
11
22
;-------------------
如何通过TStringList 操作这个文本改写为下面这样
11
22
33
44
55
11a
22a
66
77
88
11b
22b最好可以当数值满到多少位之后减去最后一位改成a..z望各位大侠 大哥 大姐 赐教procedure TForm1.Button18Click(Sender: TObject);
var
i: Integer;
tmpStr: TStrings;
tmpPreStr: string;
begin
tmpStr := TStringList.Create;
tmpStr.LoadFromFile('1.txt');
for i := 0 to tmpStr.Count - 1 do
begin
if RightStr(tmpStr.Strings[i], 1)[1] in ['a'..'z'] then
tmpPreStr := LeftStr(tmpStr.Strings[i], Length(tmpStr.Strings[i]) - 1)
else tmpPreStr := tmpStr.Strings[i];
if (i > 0) and (tmpPreStr = tmpStr.Strings[i]) then
tmpStr.Strings[i] := tmpStr.Strings[i] + Char(Ord(RightStr(tmpStr.Strings[i], 1)[1]) + 1);
end;
end;网上摘下来的代码.不过有问题,编译通过运行起来没效果,对TStringList 不是太理解!望大哥能改正一下,这个需要引用 StrUtils
11
22
33
44
55
11
22
66
77
88
11
22
;-------------------
如何通过TStringList 操作这个文本改写为下面这样
11
22
33
44
55
11a
22a
66
77
88
11b
22b最好可以当数值满到多少位之后减去最后一位改成a..z望各位大侠 大哥 大姐 赐教procedure TForm1.Button18Click(Sender: TObject);
var
i: Integer;
tmpStr: TStrings;
tmpPreStr: string;
begin
tmpStr := TStringList.Create;
tmpStr.LoadFromFile('1.txt');
for i := 0 to tmpStr.Count - 1 do
begin
if RightStr(tmpStr.Strings[i], 1)[1] in ['a'..'z'] then
tmpPreStr := LeftStr(tmpStr.Strings[i], Length(tmpStr.Strings[i]) - 1)
else tmpPreStr := tmpStr.Strings[i];
if (i > 0) and (tmpPreStr = tmpStr.Strings[i]) then
tmpStr.Strings[i] := tmpStr.Strings[i] + Char(Ord(RightStr(tmpStr.Strings[i], 1)[1]) + 1);
end;
end;网上摘下来的代码.不过有问题,编译通过运行起来没效果,对TStringList 不是太理解!望大哥能改正一下,这个需要引用 StrUtils
var
iLoop: Integer;
AList: TStrings;
AChar: Char;
tmpPreStr: string;
begin
AList := TStringList.Create;
try
AList.LoadFromFile('c:\1.txt');
for iLoop := 1 to AList.Count - 1 do
begin
if AList.IndexOf(AList.Strings[iLoop]) < iLoop then
begin
for AChar := 'a' to 'z' do
begin
if AList.IndexOf(AList.Strings[iLoop] + AChar) < 0 then
begin
AList.Strings[iLoop] := AList.Strings[iLoop] + AChar;
break;
end;
end;
end;
end;
AList.SaveToFile('c:\2.txt');
finally
AList.Free;
end;
end;
var
iLoop: Integer;
AList: TStrings;
AChar: Char;
sTemp: String;
begin
AList := TStringList.Create;
try
AList.LoadFromFile('c:\1.txt');
for iLoop := 1 to AList.Count - 1 do
begin
if AList.IndexOf(AList.Strings[iLoop]) < iLoop then
begin
for AChar := 'a' to 'z' do
begin
if Length(AList.Strings[iLoop]) < 14 then
sTemp := AList.Strings[iLoop] + AChar
else
sTemp := Copy(AList.Strings[iLoop], 1, 13) + AChar;
if AList.IndexOf(sTemp) < 0 then
begin
AList.Strings[iLoop] := sTemp;
break;
end;
end;
end;
end;
AList.SaveToFile('c:\2.txt');
finally
AList.Free;
end;
end;