有一个字符串,用|分隔,如何取出各个部分?

FigoZhu 2006-06-26 05:36:10
有一个字符串,用|分隔,如何取出各个部分?
例如,字符串如下:
中文|english|123456||结束了|

要求能分别取得:
中文
english
123456
// 这里应该是空串
结束了
...全文
415 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxtnt 2006-07-01
  • 打赏
  • 举报
回复
不用这么复杂!更用不着动用TSTRINGLIST它老人家!

Function x(s;string;index:integer;sp:char):String;
var
i,ipos,temppos,len:integer;
begin
i:=1;
ipos:=0;
temppos:=1;
len:=length(s);
while i<len do
begin
if s[i]=sp then
begin
inc(ipos);
if ipos=index then
begin
result:=copy(s,tempos,i-tempos);
break;
end;
temppos:=i;
end;
inc(i);
end;
end;
hanyel 2006-07-01
  • 打赏
  • 举报
回复
樓上拽!正解決
手指风 2006-07-01
  • 打赏
  • 举报
回复
如果用d提供的基本方法不能实现就自己写一个,就一个递归pos差不多就能解决了吧
belllab 2006-06-30
  • 打赏
  • 举报
回复
Use XMLUtil
Split0()
risingsoft 2006-06-30
  • 打赏
  • 举报
回复
type
TSplitArray=array of string;
PSplitArray=^TSplitArray;
TSplit=class(TStringList)
public
function Split(str:string;Delimiter:string):TSplitArray;
function SplitStr(str:string;Delimiter:string):TSplitArray;
end;

{ TSplit }

function TSplit.Split(str, Delimiter: string): TSplitArray;
var
i:integer;
begin
if length(Delimiter)>0 then
self.Delimiter := Delimiter[1]
else
self.Delimiter := char(pchar(''));
self.DelimitedText := str;

setLength(result,count);
for i := 0 to count - 1 do
begin
result[i] := Strings[i];
end;
end;

function TSplit.SplitStr(str, Delimiter: string): TSplitArray;
var
temp:string;
i:integer;
ArraySize:integer;
begin
temp := str;
ArraySize := 0;

while pos(Delimiter,temp) > 0 do
begin
inc(ArraySize);
setLength(result,ArraySize);
result[high(result)] := copy(temp,1,pos(Delimiter,temp)-1);
System.delete(temp,1,pos(Delimiter,temp)+length(Delimiter)-1);
end;
if temp<>'' then
begin
inc(ArraySize);
setLength(result,ArraySize);
result[high(result)] := temp;
end;
end;


procedure TForm1.BitBtn3Click(Sender: TObject);
var
SplitArray:TSplitArray;
split:TSplit;
i:integer;
begin

split := TSplit.Create;
SplitArray := split.Split('I,am,a,boy!',',');
for i := low(SplitArray) to high(SplitArray) do
showmessage(SplitArray[i]);

SplitArray := split.SplitStr('I,,am,,a,,boy!',',,');
for i := low(SplitArray) to high(SplitArray) do
showmessage(SplitArray[i]);
split.Free;
end;
risingsoft 2006-06-29
  • 打赏
  • 举报
回复
很简单啊。
1、使用TStringList的功能,传入字符串和分割符,返回一个一维动态数组
2、自己编写啊。传入字符串和分割“串”,循环POS,得到一个就增加动态数组长度并写入,再删除POS位置后的分割串及以前所有字符
risingsoft 2006-06-29
  • 打赏
  • 举报
回复
明天去公司把我的CODE给你PASTE一下
whb1573 2006-06-28
  • 打赏
  • 举报
回复
var
strList:TStringList;

ExtractStrings(['|'], [], PChar(str), strList)
FigoZhu 2006-06-28
  • 打赏
  • 举报
回复
另外,还有问题就是,如果DelimitedText赋值一个不包含分隔字符的字符串,如何判断分割失败呢?
solokey 2006-06-27
  • 打赏
  • 举报
回复
function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar;
Strings: TStrings): Integer;
FigoZhu 2006-06-27
  • 打赏
  • 举报
回复
谢谢各位啦。
陈保现 2006-06-26
  • 打赏
  • 举报
回复
仁兄,还忘了释放 strs
补充liangyong007a((梦里有云,心中有天地)(探花秀))
procedure TForm1.Button5Click(Sender: TObject);
const
constr :String = '中文|english|123456||';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
try
strs.Delimiter := '|';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
finally
strs.Free;
end;
end;
liangyong007a 2006-06-26
  • 打赏
  • 举报
回复
最后多了个end; 不好意思
liangyong007a 2006-06-26
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
const
constr :String = '中文|english|123456||';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '|';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
end;
liangyong007a 2006-06-26
  • 打赏
  • 举报
回复
用Tstringlist
"plist图片查看工具 v1.2"是一款专为Mac用户设计的应用程序,旨在帮助开发者和设计师更方便地管理和查看.plist格式的图片资源。在iOS和Cocos2d-x游戏开发中,.plist文件通常用于存储图像序列,如动画帧或精灵表,以便于程序加载和播放。这款工具的最新更新v1.2版增强了用户体验和功能性。 更新后的功能之一是允许用户通过双击图块列表上的图块名称或大图上的图块来快速复制图块名称到剪贴板。这一改进极大地提升了工作效率,用户不再需要手动输入或复制这些名称,尤其在处理大量图块时,节省了宝贵的时间。 新添加的“导出图块”功能是这次更新的亮点。这个功能使得用户能够将查看的图块直接导出为所需的文件格式,这可能是PNG、JPG或其他常用的图像格式。这对于需要将单个图块用于其他项目,或者进行进一步编辑的开发者来说非常实用。它简化了从.plist文件中提取特定图像的过程,避免了在不同软件之间切换的繁琐操作。 Cocos2d-x是一个广泛使用的开源2D游戏开发框架,支持多种平台,包括iOS、Android和Mac等。.plist图片查看工具与Cocos2d-x的结合,为开发者提供了一个直观的界面,以管理他们在游戏中使用的图像资源。通过这款工具,开发者可以预览和调整Cocos2d-x项目中的精灵表和动画,确保游戏视觉效果的准确性和流畅性。 在实际应用中,例如在创建角色动作或游戏场景的动画时,开发者可以利用此工具快速检查每个帧的细节,然后轻松导出需要的图块进行微调。此外,这个工具还可以用于教学和学习,帮助初学者理解.plist文件的结构和工作原理。 "plist图片查看工具 v1.2"是一款针对Cocos2d-x开发者和设计师的强大辅助工具,其最新的更新提升了用户交互性和实用性,为.plist文件的管理和使用提供了便利。无论是快速复制图块名称还是导出单个图块,这些功能都大大提高了工作效率,降低了开发过程中的复杂性。对于那些频繁处理.plist格式图像资源的人来说,这无疑是一个不可或缺的利器。

16,743

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧