取字符串中分隔符最右边的串?(100分)

  • 主题发起人 主题发起人 pascal!
  • 开始时间 开始时间
P

pascal!

Unregistered / Unconfirmed
GUEST, unregistred user!
一个以 '/' 分隔的字符串,如何取其最右边的字符段?
如字符串: 基本面指标/公司指标/估值指标/市场表现/成交量研究
则取出结果为“成交量研究”。
我记得delphi本身有这个函数(早几天还在用),但忘了名字,又找不到写在哪了。
答案只接受delphi本身的函数。
 
LastDelimiter
 
可以接合RightStr函数使用。
但也可以自己定义一个函数。如:
procedure TForm1.Button2Click(Sender: TObject);
function GetRightStr(Str:String):String;
var
GetStr:TStringList;
begin
GetStr:=TStringList.Create;
GetStr.Delimiter:='/';
GetStr.DelimitedText:=Str;
Result:=GetStr.Strings[GetStr.Count-1];
GetStr.Free;
end;
var
Str:String;
begin
Str:='基本面指标/公司指标/估值指标/市场表现/成交量研究';
ShowMessage(GetRightStr(Str))
end;

技术交流QQ:136293586
 
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
locate: Integer;
begin
s := '基本面指标/公司指标/估值指标/市场表现/成交量研究';
locate := LastDelimiter('/', s);
s := Copy(s, locate + 1, Length(s) - locate + 1);
ShowMessage(s);
end;
 
呵呵,除了我上面说的,按照楼主的意思,可能可以勇下面的方式,更简单:
ExtractFileName

看看Delphi的实现就知道了:)
///////////////////////
function ExtractFileName(const FileName: string): string;
var
I: Integer;
begin
I := LastDelimiter(PathDelim + DriveDelim, FileName);
Result := Copy(FileName, I + 1, MaxInt);
end;
 
接受答案了.
 
function RightDeliStr(str,Delimiter:string):string;
var
i:integer;
tmpstr:string;
begin
tmpstr := str;
i := 0;
while (pos(Delimiter,tmpstr) > 0) do
begin
i := pos(Delimiter,tmpstr);
tmpstr := copy(tmpstr,1,i-1) + ' '+
copy(tmpstr,i+1,length(tmpstr) + 1 - i);
end;
Result := Copy(str,i + 1,length(str) + 1 - (i + 1));
end;

ShowMessage(RightDeliStr('基本面指标/公司指标/估值指标/市场表现/成交量研究','/'));

变通实现~!
 
改进版本:
function RightDeliStr(str,Delimiter:string):string;
var
i:integer;
tmpstr:string;
begin
tmpstr := str;
i := 0;
while (pos(Delimiter,tmpstr) > 0) do
begin
i := pos(Delimiter,tmpstr);
tmpstr := copy(tmpstr,1,i-1) + ' '+
copy(tmpstr,i+1,length(tmpstr) + 1 - i);
end;
if i > 0 then
Result := Copy(str,i + length(Delimiter),length(str) + 1 - (i + length(Delimiter)))
else
Result := str;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(RightDeliStr('基本面指标ss公司指标ss估值指标ss市场表现ss成交量研究','ss'));
Close;
end;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部