首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请教个字符串 控制方面的有关问题

2012-04-22 
请问个字符串 控制方面的问题例如:A串:A\B\C\DB串:AA\bb\cc\ddC串:AAA\bbb\ccc\ddd有没有函数可以就把每个

请问个字符串 控制方面的问题
例如:A串:A\B\C\D
  B串:AA\bb\cc\dd
  C串:AAA\bbb\ccc\ddd
有没有函数可以就把每个串最后一个 \后的内容提取出来 就是取D cd ddd
不想用类似于slpit 这样的功能。有没有哪个函数可以一句代码就可以取出来的?
 

[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
var
S1,S2 :string;
I,J :integer;
begin
S1 := 'a\da\bc\de';
I := PosEx('\',S1,1);
J := I;
while (J>0) do
begin
J := PosEx('\',S1,I+1);
if J>0 then I := J;
end;
S2 := RightStr(S1,Length(S1)-I);
showmessage(S2);
end;
注意在Uses 加上单元 StrUtils
[解决办法]
function ssabc(sabc:string):string;
var
sss:string;
begin
sss:=sss+sabc+'\';
Result:= sss;
end;
引用方式
showmessage(pchar(ssabc('abc')+ssabc('cde')));

这20分是我的了呀
[解决办法]
引用方式
ssabc('abc');
这可是个万能的哟,想显示什么就什么的哟


这20分是我的了呀
[解决办法]
楼主要的是一句代码实现,你们都不合格,试试我的吧

Delphi(Pascal) code
Uses StrUtils;const S:string='AAA\bbb\ccc\ddd';ShowMessage(RightStr(S,Pos('\',ReverseString(S))-1));
[解决办法]
再给你提供一个方法,用LastDelimiter

Delphi(Pascal) code
ShowMessage(RightStr(S,Length(S)-LastDelimiter('\',S)));
[解决办法]
kaikai_kk
看到你的代码,我修改一下如下:
function TForm1.ssabc01(sabc:string):string;
var
sss:string;
begin
sss:=RightStr(S,Pos('\',ReverseString(S))-1);
Result:= sss;
end;
引用方式如下:
ssabc01('AAA\bbb\ccc\ddd');

这下子对了吧,接分中
[解决办法]
Delphi(Pascal) code
showmessage(ExtractFileName('AAA\bbb\ccc\ddd'));手头没DELPHI,不知道直接用这个当路径来取能否得到ddd!
[解决办法]
总结一下:
#2楼 是以\分割字符串的
#6楼 是分离出最后一个\之后的字符串

全是“函数体”方式的
[解决办法]
真奇怪了呀,6楼的帖子没有了呀
function TForm1.ssabc01(sabc:string):string;
var
sss:string;
begin
sss:=RightStr(S,Pos('\',ReverseString(S))-1);
Result:= sss;
end;
显示方式
ShowMessage(ssabc01('AAA\bbb\ccc\ddd'));
[解决办法]
呵呵,接分中..........
我的可是万能的哟
[解决办法]
好吧,大半的都来讨论这个小问题
思路:先找出最后出现的分隔符号位置,然后截取;所以至少要用到2个函数

1楼不符合题意
小鸟你前面的是答非所问啊...嘿嘿
7楼ExtractFileName方法,也是调用了LastDelimiter+Copy的方法,不过特殊符号要刚好是"\"才行

我的就不分析,RightStr实际上就是Copy,而ReverseString用了指针与数组

最后得出结果是:都在蛋痛,而楼主学会了多个方法
[解决办法]
回复于:2012-04-11 23:26:04

各位大侠真是敬业啊,服了。
[解决办法]
kaikai_kk
呵呵,

总结一下:
#2楼 是以\分割字符串的
#6楼 是分离出最后一个\之后的字符串

全是“函数体”方式的

楼主这20分真不好挣呀
[解决办法]
4L的方法反转字符串后还是要再反转一次的,否则会出问题
5L是对的

[解决办法]
探讨
4L的方法反转字符串后还是要再反转一次的,否则会出问题


5L是对的


[解决办法]
探讨
引用:
4L的方法反转字符串后还是要再反转一次的,否则会出问题
5L是对的
我的也是对的呀,大叔不夸奖下小弟呀!

[解决办法]
探讨
7L呀呀

[解决办法]
我再补充一种办法,用数组,字符串可以按照位访问啊,当成数组就可以了。
var
s:string;
i:integer;
begin
s:='aa\bb\cc\ddd';
i:=length(s);
while s[i]<>'\' do i:=i-1;
showmessage(copy(s,i+1,length(s)));
end;
[解决办法]
t1122
呵呵,方便引用吗
[解决办法]
var
a,b,c:string;

begin
a:='aaaa\aaaa\aaaa\aaaa';
b:='\';
c:=copy(a,LastDelimiter(b,a)+1,length(a)-LastDelimiter(a,b));
showmessage(c);
end;

热点排行