實現效果
每個項目後只跟定一個分號,
傳入;abc;123;jkl; 返回abc;123;jkl; //消除了,字符串第一位為分號的問題
傳入abc;;;123;;;jkl;返回abc;123;jkl; //消除了,字符串中項目之後跟了多餘的分號;
傳入abc;;;123;;;jkl 返回abc;123;jkl; //在字符串最後的項目補上字符串
關鍵函數
Delete {功能說明:刪除字符串中指定的字符串。該函數有三個參數。第一個參數為要進行處理的字符串,第二個參數為從何處開始刪除,第三個參數為刪除的字符個數。 }LeftStr(所在單元:StrUtils) {功能說明:返回字符串左邊指定個數的新字符(串)。該函數有兩個參數。第一個參數為完整的字符串,第二個參數為指定個數。 }RightStr(所在單元:StrUtils) {功能說明:返回字符串右邊指定個數的新字符(串)。該函數有兩個參數。第一個參數為完整的字符串,第二個參數為指定個數。 }Pos {功能說明:查找字符(串)所在位置。該函數有二個參數。第一個參數為要查找的字符(串),第二個參數為被查找字符(串)。 } Code: // 需要uses
StrUtils單元function DealStr(s:string):string;var s2,s3:string;var s1:widestrng; //如果要處理的字符串有漢子,應使用widestrng類型,begin s1:=''; s2:='' ; s3:=''; s1:=s; if not (s1='') then begin while Pos(' ',s1)>0 do //消除字符串所有空格begin Delete(s1,Pos(' ', s1),1); end; if rightstr(s1,1)<>';' then //字符串末尾加上';'以保證進入循環的數據完整性begin s1:=s1+';'; end; while (Length(s1)>0) do //檢測字符串s1到為0為止begin if Pos(';',s1)=1 then //判斷第一位是不是';' begin s1:=RightStr( s1, (Length(s1)-Pos(';',s1)) ); end; s3:=LeftStr(s1,Pos(';',s1));//取左邊的字符串if (s3=' ;')then //若左邊的字符串只有分號,則捨棄begin end else begin s2:=s2+s3; //累積符合規則的字符串end; s1:=RightStr(s1, (Length(s1) -Pos(';',s1)) ); end; end; Result:=s2;end;