var s: string; begin s := 'http://img12.360buyimg.com/n2/g5/M02/12/11d/drBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg'; s := ReverseString(s); s := Copy(s, 1, Pos('/', s) - 1); s := ReverseString(s);
首部 function ReverseString(const AText: string): string; $[StrUtils.pas 功能 返回字符串AText的反序 说明 ReverseString('1234') = '4321' 参考 function System.SetLength 例子 Edit3.Text := ReverseString(Edit1.Text);
function GetFileName(const sFilePath : string) : string; var i, nLen : integer; begin nLen := length(sFilePath); for i := nLen downto 1 do begin if sFilePath[i] = '/' then begin Result := copy(sFilePath, i + 1, nLen); exit; end; end; Result := ''; end;procedure TForm1.FormCreate(Sender: TObject); const str = 'http://img12.360buyimg.com/n2/g5/M02/12/11/rBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg'; begin caption := GetFileName(str); end;
看看代码量吧,反转可以更快的定为到‘/’。这是ReverseString函数, 执行工作量不小function ReverseString(const AText: string): string; var I: Integer; P: PChar; begin SetLength(Result, Length(AText)); P := PChar(Result); for I := Length(AText) downto 1 do begin P^ := AText[I]; Inc(P); end; end;代码量问题, 写一个自定义函数GetFileName, 用户调用代码量就一行
用SysUtils.StrRScan函数就可以了。 procedure TForm2.Button1Click(Sender: TObject); var s: string; begin s := SysUtils.StrRScan('http://img12.360buyimg.com/n2/g5/M02/12/11/rBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg', '/'); Memo1.Lines.Add(Copy(s, 2, Length(s) - 1)); end;
SysUtils.LastDelimiter var I: Integer; S: string; begin S := 'http://img12.360buyimg.com/n2/g5/M02/12/11/rBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg'; I := LastDelimiter('/', S); Delete(S, 1, I); ShowMessage(S) end;
s: string;
begin
s := 'http://img12.360buyimg.com/n2/g5/M02/12/11d/drBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg';
s := ReverseString(s);
s := Copy(s, 1, Pos('/', s) - 1);
s := ReverseString(s);
首部 function ReverseString(const AText: string): string; $[StrUtils.pas
功能 返回字符串AText的反序
说明 ReverseString('1234') = '4321'
参考 function System.SetLength
例子 Edit3.Text := ReverseString(Edit1.Text);
var
i, nLen : integer;
begin
nLen := length(sFilePath);
for i := nLen downto 1 do
begin
if sFilePath[i] = '/' then
begin
Result := copy(sFilePath, i + 1, nLen);
exit;
end;
end;
Result := '';
end;procedure TForm1.FormCreate(Sender: TObject);
const str = 'http://img12.360buyimg.com/n2/g5/M02/12/11/rBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg';
begin
caption := GetFileName(str);
end;
var
I: Integer;
P: PChar;
begin
SetLength(Result, Length(AText));
P := PChar(Result);
for I := Length(AText) downto 1 do
begin
P^ := AText[I];
Inc(P);
end;
end;代码量问题, 写一个自定义函数GetFileName, 用户调用代码量就一行
用SysUtils.StrRScan函数就可以了。
procedure TForm2.Button1Click(Sender: TObject);
var
s: string;
begin
s := SysUtils.StrRScan('http://img12.360buyimg.com/n2/g5/M02/12/11/rBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg', '/');
Memo1.Lines.Add(Copy(s, 2, Length(s) - 1));
end;
var
I: Integer;
S: string;
begin
S := 'http://img12.360buyimg.com/n2/g5/M02/12/11/rBEIDE_ym3gIAAAAAAH-cY-b9d4AADnwwG6zW4AAf6J330.jpg';
I := LastDelimiter('/', S);
Delete(S, 1, I);
ShowMessage(S)
end;
参考Delphi系统文件的做法