有个字符串,中间用“ - ”隔开,我要把“-”前后的字符分别放到一个字符数组中。
例如:
str:string;//str的长度是不固定的
str_array:array[1..4] of sting;str='002-0568-987-458a',我要把str这个字符串的字符分别存到数组str_array中,str_array[1]='002',
str_array[2]='0568',
str_array[3]='987',
str_array[4]='458a',请问如何编程把str='002-0568-987-458a'存入数组str_array中呢?
例如:
str:string;//str的长度是不固定的
str_array:array[1..4] of sting;str='002-0568-987-458a',我要把str这个字符串的字符分别存到数组str_array中,str_array[1]='002',
str_array[2]='0568',
str_array[3]='987',
str_array[4]='458a',请问如何编程把str='002-0568-987-458a'存入数组str_array中呢?
解决方案 »
- class XX not found .
- 请各位大侠,赐教啊,偶弄了一天了也搞不定啊,谁给解决谁就是高手啊。。!!!
- 在程序中用CreateOleObject('Excel.Application')往excel报表中写数据时出现oleerror?
- CreateProcess写不对,大家帮忙!
- 请各位高手帮忙,关于用DELPHI和MYSQL数据厍开发网站的问题
- 记录被无故锁定的原因???
- 请问在什么地方可以找到 打印条码 的字体 这种字体名称是什么??谢谢
- 一个有关日期的简单问题
- 程序出错
- 如何把DBgrid中的表示编辑状态的蓝色给去掉,只显示背景色。
- 急需寻找DELPHI中关于条形码扫描器相关的开发包和控件,在线等待,谢谢!!!!!
- TXMLDocument的问题!来者有分!
自己多试
str_array[2]=Copy(str,5,8);
str_array[3]=Copy(str,10,12);
str_array[4]=Copy(str,14,17);ok了...
USES
strutils;
三个参数的含义是:目标字符串,开始位置,长度
void substr1( char *s, int ino, char *cout)
{
char *fp1, *fp2;
int i,ch='-', result;
if (ino <= 0) {
cout[0] = '\0';
return;
}
fp1 = s;
for (i=1; i<ino; i++)
{
fp2 = strchr(fp1, ch);
if(fp2) {
fp1 = fp2+1; //指针定位到“|”后的第一个字符上
} else {
fp1 = NULL;
break;
}
}
// fp1为要查找的字符串前的一个“|”的位置 fp2为要查找的字符串后的一个“|”的位置
if (fp1)
fp2 = strchr(fp1, ch);
if (fp1) {
if(fp2) {
result = fp2-fp1;
for (i=0; i<result; i++)
{
cout[i] = *(fp1+i);
}
cout[result] = '\0';
}
else
strcpy(cout,fp1);
}
else
cout[0]='\0';//没找到输出空串
}
用这个思路,做个循环就好了。
var
aStrs: TStrings
begin
aStrs := TStringList.Create;
try
aStrs.Delimiter := '-';
aStrs.DelimitedText := '12345-34567-2-34';
ShowMessage(aStrs[1]); //34567;
finally
aStrs.Free;
end;
end;
用一个Strings就行了,这样赋值之后每行就是被'-'分隔的部分,如果你真的要放到数组,那就循环赋值吧
str_array[2]=Copy(str,5,8);
str_array[3]=Copy(str,10,12);
str_array[4]=Copy(str,14,17);
TestStr = '1st term;2nd term;3rd term';//加在USE 和TYPE中间procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
{ This browses a string and divide it into terms whenever the given
separator is found. The separators will be removed }
var
hs : string;
p : integer;begin
Terms.Clear; // First remove all remaining terms
if Length(s)=0 then // Nothin' to separate
Exit;
p:=Pos(Separator,s);
while P<>0 do
begin
hs:=Copy(s,1,p-1); // Copy term
Terms.Add(hs); // Add to list
Delete(s,1,p); // Remove term and separator
p:=Pos(Separator,s); // Search next separator
end;
if Length(s)>0 then
Terms.Add(s); // Add remaining term
end;==========
= 用 法
==========
//加一个按钮,在ONCLICK中写:
var
Terms : TStringList;
i : integer;begin
Terms:=TStringList.Create;
SeparateTerms(TestStr,';',Terms);
for i:=0 to terms.Count-1 do
ShowMessage(Terms.Strings[i]);
Terms.Free;
end;