如何截取字符串中的子串(20分)

  • 主题发起人 heartaching
  • 开始时间
H

heartaching

Unregistered / Unconfirmed
GUEST, unregistred user!

如何才能截取字符串:F:/塔河数据/THHTB/S10C13Cp.txt
中的子串:S10C13Cp
 
mainSTR:='F:/塔河数据/THHTB/S10C13Cp.txt';
for i:=0 to length(mainSTR)-1 do
if mainSTR='/' then
ano:=i;
for i:=ano to length(mainSTR)-1 do
if mainSTR='.' then
bno:=i;
myStr:=midSTR(mainSTR,ano,bno-ano);
 
var
s,s1:string;
begin
s:='F:/塔河数据/THHTB/S10C13Cp.txt';
s1:=copy(s,19,8);
showmessage(s1);
如果你想得到文件名,可以用extractfilename(s);
 
thanks
mid是什么呢?help中怎么没有呢?
 
resun的方法最简单
 
呵呵,我的方法最通用,不就是获取文件名(不含扩展名)吗:

function ExtractFileMainName(const FileName: string): string;
var
p: Integer;
begin
Result := FileName;
p := Pos('.', Result);
Delete(Result, p, Length(Result) - p + 1);
p := Pos('/', Result);
while p <> 0 do
begin
Delete(Result, 1, p);
p := Pos('/', Result);
end;
end;

 
可惜resun写的方法不具通用性呀,我的字符串不是固定的。
 
同意beta,用pos( )可以获得特定字符的位置。
 
var
Str1,Str2:String;
begin
Str1:='F:/塔河数据/THHTB/S10C13Cp.txt';
Str2:=Copy(Str1,19,8);
ShowMessage(Str2);
end;
 
mid写错了,是VB里的函数。DELPHI里的是midSTR
 
用两个函数不就行了!!!
showmessage(ChangeFileExt(ExtractFileName('F:/塔河数据/THHTB/S10C13Cp.txt'),''));
 
把你的要求说清楚一点
 
thanks you all
to resun
是想从OpenDialog中读出文件的名称,然后取出文件名就行,不需要文件的地址和扩展名。

to wwwolf
你的方法有些问题,因为字串中有三个'/',你只取出了第一个'/'出现的地方,而不是最后
的一个出现的地方。

to jsxjd
the simplest method
:)
 
我估计你是想得到文件名
那就用extractfilename阿

如果不是的花,就用字符函数吧
先取出"。"的位置,再取出最后一个"/"的位置,然后就可以用那些说明midstr之类的函数了
 
顶部