全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:987
推到 Plurk!
推到 Facebook!

如何消去陣列中多餘的字?

尚未結案
coolasahi
一般會員


發表:2
回覆:1
積分:0
註冊:2011-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-10-03 17:04:03 IP:180.177.xxx.xxx 訂閱
一群英文與數字在一起的字串組,如
AnsiString sTest="GPR110068,GPR110069,GPR110070,GPR110071,GPR110072,GPR110073,GPR110074,GPR110075,
GPR110076,GPR110077,GPR110078,GPR110129,GPR110214,GPR110215,GPR110216,GPR110217,
GPR110218,GPR110219,GPR110220,GPR110221,GPR110222,GPR110223,GPR110224,GPR110225,
GPR110226,GPR110227,GPR110228....."


經過轉換後想要顯示的結果如下,連續的字串組顯示為:最小-最大; 不連續的就自己一個
110068-110078,110129,110214-110230,110471-110539

目前以下程式碼執行結果為:
110068-110078,110129,110214-110230,110471-110539,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.....
想請問該如何把這些0消去,而只顯示出:
110068-110078,110129,110214-110230,110471-110539
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
程式碼如下:

AnsiString TForm1::converMachNo( AnsiString sMachs)
{
AnsiString sTemp[ 200];
int iTmp[ 200];
ZeroMemory( iTmp, sizeof(int)*200);
int iArray= 0;
int iIndexS= 1;
int iIndexE= 1;
while( 1)
{
iIndexS=sMachs.Pos("R");
iIndexE=sMachs.Pos(",");

if( iIndexE== 0)
break;

sTemp[ iArray]= sMachs.SubString( iIndexS 1, iIndexE- (iIndexS 1));
iTmp[ iArray]= atoi( sTemp[ iArray].c_str());
sMachs.Delete( 1, iIndexE);
iArray ;
}// while
int num1, num2, count =1;
sMachs= sTemp[0];
num1= iTmp[ 0];
for( int i= 1; i < sizeof( iTmp); i )
{
num2 = iTmp[i];
if(( num2- num1)!= 1)
{
if( count!= 1)
{
sMachs = ( "-" IntToStr( iTmp[ i-1]) "," IntToStr( iTmp[ i]));
}
else
{
sMachs = ( "," IntToStr(iTmp[i]));
}
count= 0;
}
num1= num2;
count ;
}
if( count!= 1)
{
sMachs = ( "-" IntToStr( iTmp[ sizeof(iTmp)-1]));
}
return sMachs;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString sTest="GPR110068,GPR110069,GPR110070,GPR110071,GPR110072,GPR110073,GPR110074,GPR110075,GPR110076,GPR110077,GPR110078,GPR110129,GPR110214,GPR110215,GPR110216,GPR110217,GPR110218,GPR110219,GPR110220,GPR110221,GPR110222,GPR110223,GPR110224,GPR110225,GPR110226,GPR110227,GPR110228,GPR110229,GPR110230,GPR110471,GPR110472,GPR110473,GPR110474,GPR110475,GPR110476,GPR110477,GPR110478,GPR110479,GPR110480,GPR110481,GPR110482,GPR110483,GPR110484,GPR110485,GPR110486,GPR110487,GPR110488,GPR110489,GPR110490,GPR110491,GPR110492,GPR110493,GPR110494,GPR110495,GPR110496,GPR110497,GPR110498,GPR110499,GPR110500,GPR110501,GPR110502,GPR110503,GPR110504,GPR110505,GPR110506,GPR110507,GPR110508,GPR110509,GPR110510,GPR110511,GPR110512,GPR110513,GPR110514,GPR110515,GPR110516,GPR110517,GPR110518,GPR110519,GPR110520,GPR110521,GPR110522,GPR110523,GPR110524,GPR110525,GPR110526,GPR110527,GPR110528,GPR110529,GPR110530,GPR110531,GPR110532,GPR110533,GPR110534,GPR110535,GPR110536,GPR110537,GPR110538,GPR110539";
AnsiString sRet= converMachNo( sTest);
Edit1->Text=sRet;
}
附加檔案:4e897a83dcb87_消去0.JPG
編輯記錄
coolasahi 重新編輯於 2011-10-03 03:06:35, 註解 無‧
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-10-03 23:45:35 IP:203.73.xxx.xxx 訂閱
把包含 "-" 及 不為 0 的元素新增到另一個陣列, 如何 ?!
系統時間:2017-12-16 13:12:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!