字符串分割问题.

csrcom 2002-05-18 03:58:44
比如字符串:'uusdf$4,5sdafasdfasdf$5asdfasdf$7,8rtrwt$wert'
要把他以($或者$n,m或者$n。[n,m是个数字])作为符号分割。并且要提取$前面的n和m的数字.
还有个条件:就是要分割得到的字符串分配给一个字符串数组
token:array[0..100] of string;
并且要得到n和m的数字加到分割得到的字符串后面,如
分割了以后要把这些(就上面的列子)'uusdf45','sdafasdfasdf5','asdfasdf78','rtrwt','wert'

...全文
25 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
csrcom 2002-05-19
  • 打赏
  • 举报
回复
完成上面的问题,我一定给这个100分,再加100分。
csrcom 2002-05-19
  • 打赏
  • 举报
回复
($或者$n,m或者$n。[n,m是个数字]):
to : hzb(Explorer) :
你是否能够记录所有的n和m(以2维数组来记录,每行表示一次匹配$或者$n,m或者$n,每行中的的第一个是n第2个是m,如果只匹配$,那么第1,2个为空。能够办到吗?
别忘记了还要得到所有的被分割以后的字符串。他们中也许会有','和数字;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
比如S:='$按时地方$4,5asdfasdf啊而,全asfsdf,$4,asdfwerwer$6asdfasd按时地方,看见$asd4,6';
@@@@@@@@@@@@@@@@@@@@@@@@@@@
如果把这个s分割以后得到字符串(str)和$后面的n和m(Istr)
str[0]:='按时地方';str[1]:='asdfasdf啊而,全asfsdf,';
str[2]:='asdfwerwer';str[3]:='asdfasd按时地方,看见';
str[4]:='asd4,6';

Istr[0][0]:='';Istr[0][1]:='';
Istr[1][0]:='4';Istr[1][1]:='5';
Istr[2][0]:='4';Istr[2][1]:='';
Istr[3][0]:='6';Istr[3][1]:='';
Istr[4][0]:='';Istr[4][1]:='';
csrcom 2002-05-19
  • 打赏
  • 举报
回复
ti
hzb 2002-05-18
  • 打赏
  • 举报
回复
以下的语句经过测试,符合你给的例子,你再用其他数据测试一下吧。别忘。了给分。
procedure TForm1.Button1Click(Sender: TObject);
var
s, sStr: string;
i, iPos,iToken: integer;
token:array[0..100] of string;
begin
s := 'uusdf$4,5sdafasdfasdf$5asdfasdf$7,8rtrwt$wert';

iToken := 0;
while length(s) <> 0 do begin
iPos := pos('$', s);
if iPos = 0 then break;
sStr := copy(s, 1, iPos - 1);
for i := iPos +1 to length(s) do
begin
if not (s[i] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ','])
then begin
token[iToken] := sStr;
inc(iToken);
s := copy(s, i , length(s));
break;
end
else begin
if s[i] <>',' then
sStr := sStr + s[i];
end;
end;
end;
if s <>'' then
token[iToken] := s;
end;
hammer_shi 2002-05-18
  • 打赏
  • 举报
回复
哦,不好意思。上面的语句$改成'$'!
csrcom 2002-05-18
  • 打赏
  • 举报
回复
最好要简洁
hammer_shi 2002-05-18
  • 打赏
  • 举报
回复
MYLINE:=0;
A:ARRAY[1..100] OF CHAR;
BEGIN
for i:0 to num-1 do
begin
if A[I]<>$ THEN
BEGIN
LISTBOX1.ITEMS[MYLINE]:=LISTBOX1.ITEMS[MYLINE]+A[I];
END
ELSE IF A[I]=$ THEN
BEGIN
MYlINE:=MYLINE+1;
LISTBOX1.ITEMS[MYLINE]:=LISTBOX1.ITEMS[MYLINE]+A[I];
END;
end;
END;


其中加入LISTBOX控件LISTBOX1作用就是一个二维的数组,大小不确定。
csrcom 2002-05-18
  • 打赏
  • 举报
回复
当然可以,只要谁先回答出来,就先给了
hammer_shi 2002-05-18
  • 打赏
  • 举报
回复
稍等!
100分留给我,我帮你写!

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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