如何将一个长的字符串分割成几个子串,分隔标志是回车符或换行符。
请指点,谢谢。
如有一字符串:str=‘sdfd[回车符]sdfefeer[回车符]sojoun[换行符]oiufnie ’分隔成:str1='sdfd[回车符]',str2='sdfefeer[回车符]',str3='sojoun[换行符]',str4='oiufnie'
请指点,谢谢。
如有一字符串:str=‘sdfd[回车符]sdfefeer[回车符]sojoun[换行符]oiufnie ’分隔成:str1='sdfd[回车符]',str2='sdfefeer[回车符]',str3='sojoun[换行符]',str4='oiufnie'
var
Ls:TStringList;
begin
Ls:=TStringList.Create;
try
Ls.Delimiter:='\';
Ls.DelimitedText:='113\54645\5465';
ShowMessage(InttoStr(Ls.Count));
finally
Ls.Free;
end;
end;
var
Ls:TStringList;
begin
Ls:=TStringList.Create;
try
Ls.Delimiter:=#13;
Ls.DelimitedText:='113'+#13+'54645'+#13+'5465';
ShowMessage(InttoStr(Ls.Count));
finally
Ls.Free;
end;
end;
我的目的就是要从长字符串中得到几个子串。
不想通过组件来实现。因为我的长字符串来自数据库
几个子串作为treeview的child显示出来。
var
Ls:TStringList;
begin
Ls:=TStringList.Create;
try
Ls.Delimiter:=#13;
Ls.DelimitedText:='daa'+#13+'wwerr'+#13+'wwweee';
ShowMessage(InttoStr(Ls.Count));
ShowMessage(ls.Strings[0]);
ShowMessage(ls.Text);
finally
Ls.Free;
end;
end;
For I:=0 to Ls.Count-1 do
begin
Memo1.Lines.Add(Ls.Strings[I]);
end;
if use TStringList set Delimiter='/' will get
.String[0] = aaa
.String[1] = bb
.string[3] = cc
.string[4] = dddbut it is not what i want to get?
procedure StrDivideToArr(AText: string; Delimiter: string; var arrResult: array of string);
var
k, j, lastpos: integer;
begin
k := low(arrResult);
lastpos := 1;
for j := 1 to length(AText) do
if AText[j] = Delimiter then
begin
arrResult[k] := Copy(AText, lastpos, j - lastpos);
lastpos := j + 1;
k := k + 1;
end;
arrResult[k] := Copy(AText, lastpos, length(AText) + 1 - lastpos);
end;