如何消去陣列中多餘的字? |
尚未結案
|
coolasahi
一般會員 發表:2 回覆:1 積分:0 註冊:2011-10-02 發送簡訊給我 |
一群英文與數字在一起的字串組,如
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; } 編輯記錄
coolasahi 重新編輯於 2011-10-03 03:06:35, 註解 無‧
|
smallfox
高階會員 發表:2 回覆:113 積分:128 註冊:2003-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |