有很长一个字符串,存放在一个字符串变量str1里,怎样在str1里找到字符abc呢?因为可能会有很多abc,怎样把每个abc分别保存在不同的字符串变量str2,str3,str4……里呢?
请给出主要部分的源代码。谢谢!
请给出主要部分的源代码。谢谢!
解决方案 »
- 三层结构 调用Clientdataset.Append 时会将所有的记录重新刷新一遍,效率太慢了,如何解决??
- 数据库表的删除
- ADOTable控件的SaveToFile方法
- 怎样读取十六进制文件???
- 做了个超市管理系统,SQL数据库,需要源码的请留下EMAIL.................
- 两个基础问题
- 有人熟悉清华学生作的UFTP吗?能否讲讲?
- TMD烦死了!
- 用什么语句防止放在ADOdataset的AfterScroll中的部分过程在post,delete等非browse状态下执行。
- 怎么在程序中访问网络上的共享目录
- 一个小问题,怎样打包软件
- 如何在程序中调用本机所安装的“输入法”?
P; Integer;
begin
while true
Pos('abc', Str);
if Pos > 0 then Str1 := Copy(Str, P, 3);
Delete(Str, 1, P);
end;
i,j: integer;
begin
j:=1;
i:=pos('abc', Str);
while i>0 do
str[j] := Copy(Str, P, 3); //str[1..100]為已定義的字符串數組
j:=j+1;
Delete(Str, 1, i+2);
i:=pos('abc', Str);
end;
先谢谢了,我是初学者,有些地方还看不明白。
delete(str,1,i+2);这句话怎么解释?delete的用法能介绍一下吗?
另外这句:
str[j] := Copy(Str, P, 3); //str[1..100]為已定義的字符串數組
str[1..100]是不是自己开始在前面做如下定义:
Type str[1..100]: string;
然后就可以直接用了?
这种方式似乎不妥啊,事先并不知道需要多少,有可能不够,或者是多出,造成内存浪费,我理解的对吗?(初学者,不好意思)
即是從str中的第一個字符開始刪除到第(i+2)個字符,也就是刪除包括第一個'abc'以前的字符.(建議把str先保存后再操作)
2.str1[1..100]
var
str1:array[1..100]of string;
要根據你的字符串的大小由你自己決定串的大小.
怎么样分别提取TEST,44.5,4出来呢??
---------------------------------------------------------------
---------------------------------------------------------------
procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
var
hs : string;
p : integer;
begin
Terms.Clear; // 清除所有的terms
if Length(s)=0 then // 如没有任何分隔字符存在就退出
Exit;
p:=Pos(Separator,s);
while P < >0 do
begin
hs:=Copy(s,1,p-1); // 复制 term
Terms.Add(hs); // 加入 term
Delete(s,1,p); // 清除分隔符
p:=Pos(Separator,s); // 寻找下一个分隔符
end;
if Length(s) >0 then
Terms.Add(s); // 结尾剩余字符加入 term
end;
//使用办法
var
Terms : TStringList;
begin
Terms:=TStringList.Create;
str1='TEST ¦44.5 ¦4'
SeparateTerms(str1,' ¦',Terms);
Terms.Free;
end;
怎么样分别提取TEST,44.5,4出来呢??
---------------------------------------------------------------
---------------------------------------------------------------
procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
var
hs : string;
p : integer;
begin
Terms.Clear; // 清除所有的terms
if Length(s)=0 then // 如没有任何分隔字符存在就退出
Exit;
p:=Pos(Separator,s);
while P < >0 do
begin
hs:=Copy(s,1,p-1); // 复制 term
Terms.Add(hs); // 加入 term
Delete(s,1,p); // 清除分隔符
p:=Pos(Separator,s); // 寻找下一个分隔符
end;
if Length(s) >0 then
Terms.Add(s); // 结尾剩余字符加入 term
end;
//使用办法
var
Terms : TStringList;
begin
Terms:=TStringList.Create;
str1='TEST ¦44.5 ¦4'
SeparateTerms(str1,' ¦',Terms);
Terms.Free;
end;
有问题!!
重贴!!!例如。str1='TEST|44.5|4|COUNT'
怎么样分别提取TEST,44.5,4,COUNT出来呢??
---------------------------------------------------------------
---------------------------------------------------------------
procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
var
hs : string;
p : integer;
begin
Terms.Clear; // 清除所有的terms
if Length(s)=0 then // 如没有任何分隔字符存在就退出
Exit;
p:=Pos(Separator,s);
while P < >0 do
begin
hs:=Copy(s,1,p-1); // 复制 term
Terms.Add(hs); // 加入 term
Delete(s,1,p); // 清除分隔符
p:=Pos(Separator,s); // 寻找下一个分隔符
end;
if Length(s) >0 then
Terms.Add(s); // 结尾剩余字符加入 term
end;
//使用办法
var
Terms : TStringList;
begin
Terms:=TStringList.Create;
try
str1='TEST|44.5|4|COUNT'
SeparateTerms(str1,'|',Terms);
/// // 加入你的代码 ///
finally
Terms.Free;
end;end;
如果得到所有的字符串并保存到数组里后,怎样把他们再全部一起显示在某个文本框里呢?
for i := 1 to 10 do //假设数组有10个数
begin
if str[i] <> 0 then
begin
edit1.text := edit1.text+inttostr(str[i]);
end;
end;