字符串操作!!(100分)

  • 主题发起人 主题发起人 code_er
  • 开始时间 开始时间
C

code_er

Unregistered / Unconfirmed
GUEST, unregistred user!
如有:“12 4 45 13 14 15 1”这样一个字符串
我想得到:12,4,45,13,14,15,1 即把他们分离出来放到一个动态数组里,
怎么实现?帮我一下,谢谢!!
 
是不是根据中间的空格分开?
 
对呀,帮帮忙
 
你要在哪儿分
set @tmplrmc=@departs
while @tmplrmc<>''
begin
set @k=charindex(';',@tmplrmc)
if @k=0
begin
set @lrmc=@tmplrmc
set @tmplrmc=''
end
else
begin
set @lrmc=substring(@tmplrmc,1,@k-1)
set @tmplrmc=stuff(@tmplrmc,1,@k,'')
end
 
var
str : string;
StrList: TStringList;
begin
str:='12 4 45 13 14 15 1'+' ';
StrList:=TStringList.create;
while pos(' ',str)<>0 do
begin
StrList.add(copy(str,1,pos(' ',str)<>-1));
str:= trim(copy(str,pos(' ',str),length(str))+' ';
end;
StrList.free;
end;
 
  
纯手工制品
  
procedure (string str;var array of string)
var
h,i,j,k:Integer;
begin
k:=length(str);
h:=1;
i:=1;
while (j<k) and (i<k) do
begin
while (str=' ') and (i<k) do
i:=i+1;
if i<k then
begin
j:=i+1;
while (str[j]<>' ') and (j<k) do
j:=j+1;
arr[h]:=copy(str,i,j-1+1);
if j<k then
i:=j+1;
h:=h+1;
end;
end;
end;
   
 
///分割一个字符串,其中分割的标志是ch
function SplitString(const source,ch:string):tstrings;

function SplitString(const source,ch:string):tstrings;
var
temp:string;
i:integer;
begin
result:=tstringlist.Create;
temp:=source;
i:=pos(ch,source);
while i<>0 do
begin
result.Add(copy(temp,0,i-1));
delete(temp,1,i);
i:=pos(ch,temp);
end;
result.Add(temp);
end;
 

方法是在一个循环中用pos函数,对该串(设为S)进行定位,定位到第一个空格后,
将空格前的字符串substr取下,放入数组中,同时生成新的要定位的串S',新的S'是截
substr及空格的串。如此类推。

var
str : string;
StrList: TStringList;
begin
str:='12 4 45 13 14 15 1';
StrList:=TStringList.create;
while pos(' ',str)<>0 do
begin
StrList.add(copy(str,1,pos(' ',str)<>-1));
str:= trim(copy(str,pos(' ',str),length(str))+' ';
end;
if str<>'' then
StrList.add(str);
StrList.free;
end;
 
我认为'人在昆明'的想法最好,程序简单明了,pos函数:在字符串中搜索子串;copy: 返回一字符串的子串
 
pos是最好的方法
 
答案很多了,可惜都没用动态数组。
var
str : string;
StrList:array of string;
i:Integer;
begin
str:='12 4 45 13 14 15 1'+' ';
while pos(' ',str)<>0 do
begin
if High(StrList)<Low(StrList) then
begin
i:=0;
SetLength(StrList,1);
end
else
begin
i:=High(StrList)-Low(StrList)+1;
SetLength(StrList,i+1);
end;
StrList:=copy(str,1,pos(' ',str)-1));
str:= trim(copy(str,pos(' ',str),length(str))+' ';
end;
end;
 
谢谢大家!!但不能给分,怎么办
提示:“无法保存数据: 2。”
 
code_er,对此
5,
代码:
fatalexception-15,huawdg-15,pcc_mmz1
-15,yc-zhj-15,扳手-5,人在昆明-15,萧西风-5,题,您可以:
 
后退
顶部