關於C#string.replace 一點感想(有點非技術)

來源:互聯網
上載者:User

 

最近在處理字串:

有這個個字串:

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不處理空格來的實在,演算法還得修鍊,演算法有點像內功!

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.