最近在處理字串:
有這個個字串:
StringBuilder test_string = new StringBuilder();<br />test_string.Append("55 10 16 6A");
要是遇到“10 10 ”替換成“10”;“10 16”替換成“16”,其餘都不變
之前把test_string裡面的空格先去掉,再用一個迴圈處理,代碼如下
StringBuilder trs_string = new StringBuilder(); //賦值給中間變數trs_string<br /> trs_string = test_string;<br /> int ii, CurPos;<br /> CurPos = 2;<br /> for (ii = CurPos; ii < trs_string.Length - 2; ii = ii + 2)<br /> {<br /> string trs_temp = Convert.ToString(trs_string); //StringBuilder轉換成string<br /> string trs_compare = trs_temp.Substring(ii, 4); //取2個位元組(4個字元),用於比較<br /> if (trs_compare.Equals("1016") || trs_compare.Equals("1010")) //檢測有無透明傳輸的位元組<br /> {<br /> string remain_string = trs_temp.Substring(ii + 2, trs_string.Length - ii - 2); //取透明傳輸位元組以後所有位元組<br /> trs_string.Remove(ii, trs_string.Length - ii); //刪除ii以後的位元組<br /> trs_string.Append(remain_string);<br /> ii += 2; //0x10以後跳過一個位元組<br /> }<br /> }
後來發現要是不把空格剔除處理的會快很多,調用replace方法就行;之後想到一個問題要是字串是這樣的:
“55 10 10 10 10 10 16 6A”
理想處理後的字串:
"55 10 10 16 6A "
string.replace()方法會不會把“10 10”替換成“10”以後,把這個“10"繼續和下一個“ 10”組合成“10 10”,結果處理後成這樣:
“55 16 6A ” 只剩下1個“16”了,不過好在經過測試不會後這個情況的,replace方法在找到“10 10”或者“10 16”後指標先增加了
總結:自己想好久的演算法,還是replace不處理空格來的實在,演算法還得修鍊,演算法有點像內功!