我正在用pascal编写一个小程序,我遇到了一个小问题。在其他语言中,有一个名为“split”或“explode”的函数,用于获取由已定义字符分隔的长字符串,并将此长字符串拆分为几个较小的字符串,并将它们分配给一个数组。这就是我的意思,我想这样做:
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能帮我解决这个问题吗?如果这是一个非常简单的问题,很抱歉,我是编程新手。
发布于 2013-11-15 02:10:36
对于TStringList,请执行以下操作:
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属性。
另一种方式:
procedure SplitText(const aDelimiter,s: String; aList: TStringList);
begin
aList.LineBreak := aDelimiter;
aList.Text := s;
end;可以使用多个字符作为分隔符。
发布于 2013-11-15 04:40:59
Delphi RTL已经具有您需要的精确函数,即来自System.StrUtils单元的SplitString:
function SplitString(const S, Delimiters: string): TStringDynArray;文档如下所示:
将字符串拆分为由指定的分隔符字符分隔的不同部分。
SplitString将字符串拆分为由指定的分隔符字符分隔的不同部分。S是要拆分的字符串。分隔符是包含定义为分隔符的字符的字符串。
SplitString返回System.Types.TStringDynArray类型的字符串数组,其中包含原始字符串的拆分部分。
发布于 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
var OutPutVariable: iJclStringList;
OutPutVariable := JclStringList().Split('Word1.Word2.Word3','.');现在
{ OutPutVariable[0] would be 'Word1'}
{ OutPutVariable[1] would be 'Word2'}
{ OutPutVariable[2] would be 'Word3'}如果你坚持你的原始索引
{ OutPutVariable[1] would be Word1}
{ OutPutVariable[2] would be Word2}
{ OutPutVariable[3] would be Word3}然后添加存根第0个字符串
OutPutVariable := JclStringList().Split('.Word1.Word2.Word3','.');或
OutPutVariable := JclStringList().Add('').Split('Word1.Word2.Word3','.', False);它还提供了连接和许多其他函数。
PS:第四个变体是http://docwiki.embarcadero.com/Libraries/XE2/en/System.Classes.ExtractStrings
https://stackoverflow.com/questions/19984964
复制相似问题