关于字符串截取的问题
字符串如'abc-edf-gh'
我要去的最后一个'-'后面的字符串'gh'
有什么函数可以用吗
环境delphi 5
[解决办法]
把字符串反向
用pos('-',str)取出位置,再copy,最后反过来就OK
[解决办法]
//从右面查找c第一次出现的位置
function rightpos(c:char;s:string):integer;
var
i:integer;
begin
result:=0;
for i:=length(s) downto 1 do
if s[i]=c then
begin
result:=i;
break;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:string;
begin
s:='abc-edf-gh';
i:=rightpos('-',s);
s:=copy(s,1,i);
showmessage(s);
end;
[解决办法]
//这样也可以
function aa(s:string):string;
var
i:integer;
str:string;
begin
str:=reversestring(s);
i:=pos('-',str);
str:=copy(str,i,length(str)-i+1);
result:=reversestring(str);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:='abc-edf-gh';
showmessage(aa(s));
end;
[解决办法]
算了,都写了,我也来整个最短的,不用自己写函数的,也就是brightyang 说的方法,倒置,截取,再倒置,OK
- Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);//按钮的click事件,换作其他的都可以var i:integer; str:string;begin str:=ReverseString(trim(edit1.Text)); i:=pos('-',str); edit2.text:=reversestring(copy(str,i,length(str)));end;
[解决办法]
小弟看到上面 to :小和有一点错误,,西西,,
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:string;
begin
s:= 'abc-edf-gh ';
i:=rightpos( '-',s);
s:=copy(s,1,i-1);//这里,,,,,,,,,,,,,,,,,,,,,
showmessage(s);
end;
function TForm1.rightpos(c: char; s: string): integer;
var
i:integer;
begin
result:=0;
for i:=length(s) downto 1 do
if s[i]=c then
begin
result:=i;
break;
end;
end;