简单的字符串处理问题,请进,谢谢。(50分)

  • 主题发起人 主题发起人 yepp
  • 开始时间 开始时间
Y

yepp

Unregistered / Unconfirmed
GUEST, unregistred user!
RichEdit中怎样编程将文本中重复的字符串只保留一个如:a,bb,cc,bb,dd,ee,d,cc
处理后为a,bb,cc,dd,ee,d,怎样实现,谢谢
 
最笨的办法:
以逗号为分割符。
用循环把重复的字符串去掉
 
请问具体怎么实现,不好意思,我很苯,谢谢。
 
来自:吕雪松, 时间:2001-9-24 22:00:00, ID:642916
//获得字符串中的子字符串,sourceStr为源字符串,Border为定界符,如',',' ',':'等,Index为子字符中的位置}
function GetStrItem(SourStr : string;Border : Char;Index : integer):string;
var
TempStr : string;
I : integer;
begin
TempStr := SourStr;
if Pos(Border,SourStr)=0 then Result := ''
else begin
try
for I := 1 to Index - 1 do begin
if Pos(Border,TempStr) = 0 then begin
Result := '';
Exit;
end;
Delete(TempStr,1,Pos(Border,TempStr));
end;
except
ShowMessage('Have not such Index!');
result := '';
Exit;
end;
if Pos(Border,TempStr)=0 then
Result := TempStr
else
Result := Copy(TempStr,1,Pos(Border,TempStr) - 1);
end;
end;

调用方法:getStrItem(SourceStr,intervalstr,position)

SS := a,12334,3,4
你想取第三个字符串'3',如下GetStrItem(SS,',',3)
然后,
if 'string1' = 'string2' then

 
一个效率不高但可行的办法

var
SepChar, UniqueChar: Char;
Patterns: TStrings;
SepPos, i: Integer;
Str: String;
begin
UniqueChar := '##'
//选择一个不会在文本中出现的字符串
SepChar := ','
//分隔符
Str := RichEdit1.Text;
Patterns := TStringList.Create;

SepPos := Pos(SepChar, Str);
while SepPos<>0 do
begin
Patterns.Add(Copy(Str, 1, SepPos-1));
Delete(Str, 1, SepPos);
SepPos := Pos(SepChar, Str);
end;
Patterns.Add(Str);

Str := RichEdit1.Text;
for i:=0 to Patterns.Count-1 do
begin
Str := StringReplace(Str, Patterns, UniqueChar, [rfIgnoreCase]);
Str := StringReplace(Str, Patterns, '', [rfReplaceAll, rfIgnoreCase]);
Str := StringReplace(Str, UniqueChar, Patterns, [rfReplaceAll, rfIgnoreCase]);
end;

Patterns.Free;

//加入这一句就可以去掉分隔符
//StringReplace(Str, SepChar, ' ', [rfReplaceAll, rfIgnoreCase])
RichEdit1.Text := Str;
 
接受答案了.
 
后退
顶部