随笔 - 89  文章 - 1  评论 - 261  阅读 - 16万

在C#中取得指定长度的字符串

我们知道,在C#(.Net)内部所使用Unicode来存储字符串,这样在处理字符串的时候偶尔会发生一些不爽的事情。比如,如果字符串中有中文字符,而我们想取得固定长度字符串就颇为麻烦,下面提供了一个解决方案。在这个方案中,我们实现了这么几个功能:

  1. 取得给出字符串靠左边的子串,子串的大小为为指定长度;
  2. 如果给出的字符串长度大于给出的长度,则在子串的末端加上“..”。
  3. 避免出现半个汉字的情况。

源码如下:

private string getLeftSubString(string content, int length)
{
   Encoding encoding = Encoding.GetEncoding("gb2312");
   StringBuilder sb = new StringBuilder();
   int totalLength = 0;
   foreach (char contentChar in content)
   {
      int size = encoding.GetByteCount(new char[] { contentChar });
      if (totalLength + size > length -2)
      {
         sb.Append("..");
         break;
      }
      sb.Append(contentChar);
      totalLength += size;
   }
   return sb.ToString();
}

只是这个方法的效率可能效率不高,欢迎大家给出更好的解决方案。

posted on   阿齐  阅读(3068)  评论(4编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2007年6月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示