首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pascal 'Split‘函数

Pascal 'Split‘函数
EN

Stack Overflow用户
提问于 2013-11-15 02:01:05
回答 3查看 19.8K关注 0票数 4

我正在用pascal编写一个小程序,我遇到了一个小问题。在其他语言中,有一个名为“split”或“explode”的函数,用于获取由已定义字符分隔的长字符串,并将此长字符串拆分为几个较小的字符串,并将它们分配给一个数组。这就是我的意思,我想这样做:

代码语言:javascript
复制
longstring:='Word1.Word2.Word3');

Split('.', longstring, OutPutVariable) ;

{ OutPutVariable[1] would be Word1}
{ OutPutVariable[2] would be Word2}
{ OutPutVariable[3] would be Word3}

这不是真正的代码,因为在pascal中不存在“分裂”。我认为它存在于Delphi中。anypne能帮我解决这个问题吗?如果这是一个非常简单的问题,很抱歉,我是编程新手。

EN

回答 3

Stack Overflow用户

发布于 2013-11-15 02:10:36

对于TStringList,请执行以下操作:

代码语言:javascript
复制
procedure SplitText(aDelimiter: Char; const s: String; aList: TStringList);
begin
  aList.Delimiter := aDelimiter;
  aList.StrictDelimiter := True; // Spaces excluded from being a delimiter
  aList.DelimitedText := s;
end;

注意: D2006中添加了StrictDelimiter属性。

另一种方式:

代码语言:javascript
复制
procedure SplitText(const aDelimiter,s: String; aList: TStringList);
begin
  aList.LineBreak := aDelimiter;
  aList.Text := s;
end;

可以使用多个字符作为分隔符。

票数 8
EN

Stack Overflow用户

发布于 2013-11-15 04:40:59

Delphi RTL已经具有您需要的精确函数,即来自System.StrUtils单元的SplitString

代码语言:javascript
复制
function SplitString(const S, Delimiters: string): TStringDynArray;

文档如下所示:

将字符串拆分为由指定的分隔符字符分隔的不同部分。

SplitString将字符串拆分为由指定的分隔符字符分隔的不同部分。S是要拆分的字符串。分隔符是包含定义为分隔符的字符的字符串。

SplitString返回System.Types.TStringDynArray类型的字符串数组,其中包含原始字符串的拆分部分。

票数 7
EN

Stack Overflow用户

发布于 2013-11-15 17:59:31

好吧,每个人都在这里张贴他们的传统答案,我也是。

我看到两个答案已经发布,但我不知道第四个(基于PChar的ExtractStrings)是否会在这个副本关闭之前发布。

总体而言,这是Split a string into an array of strings based on a delimiter的副本,所有答案都可以在那里看到。

http://jcl.sf.net http://wiki.delphi-jedi.org/wiki/JCL_Help:IJclStringList

代码语言:javascript
复制
var OutPutVariable: iJclStringList; 

OutPutVariable := JclStringList().Split('Word1.Word2.Word3','.');

现在

代码语言:javascript
复制
{ OutPutVariable[0] would be 'Word1'}
{ OutPutVariable[1] would be 'Word2'}
{ OutPutVariable[2] would be 'Word3'}

如果你坚持你的原始索引

代码语言:javascript
复制
{ OutPutVariable[1] would be Word1}
{ OutPutVariable[2] would be Word2}
{ OutPutVariable[3] would be Word3}

然后添加存根第0个字符串

代码语言:javascript
复制
OutPutVariable := JclStringList().Split('.Word1.Word2.Word3','.');

代码语言:javascript
复制
OutPutVariable := JclStringList().Add('').Split('Word1.Word2.Word3','.', False);

它还提供了连接和许多其他函数。

PS:第四个变体是http://docwiki.embarcadero.com/Libraries/XE2/en/System.Classes.ExtractStrings

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19984964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档