C#中高效的截取字串長度的方法

來源:互聯網
上載者:User

之前做網站裡模組的列表,最開始用的截取方法很簡單、用的string的length屬性。

判斷和定義的長度比較,超過則截取,並加上自訂尾碼"...",沒超過則完整顯示。

這樣的問題是中英文占字元不同而造成截取後長短不一。

後來想到的是通過css截取,給定width,並設定overflow:hidden。

這樣截取的比較齊整勒、可是一旦中英文字串的長度和定義width有一些誤差。

標題中的漢字很容易被切割只顯示左側一部分勒,顯示上也不夠,所以就想到改善最初的截取方法。

改自CSDN裡的一個文章。

代碼如下:

/// <summary><br /> /// 截取字串長度<br /> /// </summary><br /> /// <param name="input">要截取的字串對象</param><br /> /// <param name="length">要保留的字元個數</param><br /> /// <param name="suffix">尾碼(用以替換超出長度部分)</param><br /> /// <returns></returns><br /> public static string MySubString(string input, int length,string suffix)<br /> {<br /> Encoding encode = Encoding.GetEncoding("gb2312");<br /> byte[] byteArr = encode.GetBytes(input);<br /> if (byteArr.Length <= length) return input;</p><p> int m = 0, n = 0;<br /> foreach (byte b in byteArr)<br /> {<br /> if (n >= length) break;<br /> if (b > 127) m++; //重要一步:對前p個位元組中的值大於127的字元進行統計<br /> n++;<br /> }<br /> if (m % 2 != 0) n = length + 1; //如果非偶:則說明末尾為雙位元組字元,截取位元加1</p><p> return encode.GetString(byteArr, 0, n)+suffix;<br /> } </p><p>

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/nextuntil/archive/2010/06/06/5650182.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.