C#实现根据字节数截取字符串并加上省略号的方法

 更新时间:2014年07月30日 11:22:44   投稿:shichen2014  
这篇文章主要介绍了C#实现根据字节数截取字符串并加上省略号的方法,比较实用的功能,需要的朋友可以参考下

本文实例讲述了C#按字节数截取字符串并在后面加上省略号...的方法,这是一个自定义的C#函数,函数的使用说明如下:

<param name="origStr">原始字符串</param>
<param name="endIndex">提取前endIdex个字节</param>
<returns></returns>

函数代码如下:

public static string GetSubString(string origStr, int endIndex)
{
  if (origStr == null || origStr.Length == 0 || endIndex < 0)
    return "";
  int bytesCount = System.Text.Encoding.GetEncoding("gb2312").GetByteCount(origStr);
  if (bytesCount > endIndex)
  {
    int readyLength = 0;
    int byteLength;
    for (int i = 0; i < origStr.Length; i++)
    {
      byteLength = System.Text.Encoding.GetEncoding("gb2312").GetByteCount(new char[] { origStr[i] });
      readyLength += byteLength;
      if (readyLength == endIndex)
      {
        origStr = origStr.Substring(0, i + 1) + "...";
        break;
      }
      else if (readyLength > endIndex)
      {
        origStr = origStr.Substring(0, i) + "...";
        break;
      }
    }
  }
  return origStr;
}

以下所示示例也是根据字节数截取字符串的,只是这个函数后面不加省略号……

/// 按字节数截取字符串(不带省略号)
/// </summary>
/// <param name="origStr">原始字符串</param>
/// <param name="endIndex">提取前endIdex个字节</param>
/// <returns></returns>
public static string GetSub1String(string origStr, int endIndex)
{
  if (origStr == null || origStr.Length == 0 || endIndex < 0)
    return "";
  int bytesCount = System.Text.Encoding.GetEncoding("gb2312").GetByteCount(origStr);
  if (bytesCount > endIndex)
  {
    int readyLength = 0;
    int byteLength;
    for (int i = 0; i < origStr.Length; i++)
    {
      byteLength = System.Text.Encoding.GetEncoding("gb2312").GetByteCount(new char[] { origStr[i] });
      readyLength += byteLength;
      if (readyLength == endIndex)
      {
        origStr = origStr.Substring(0, i + 1);
        break;
      }
      else if (readyLength > endIndex)
      {
        origStr = origStr.Substring(0, i);
        break;
      }
    }
  }
  return origStr;
}

相关文章

  • C# 开发日志本地化工具

    C# 开发日志本地化工具

    这篇文章主要介绍了C# 开发日志本地化工具的步骤,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • 浅析C#更改令牌ChangeToken

    浅析C#更改令牌ChangeToken

    这篇文章主要介绍了C#更改令牌ChangeToken,文中运用大量代码讲解的非常详细,感兴趣的小伙伴一起来看看这篇文章吧
    2021-09-09
  • WPF实现图片合成或加水印的方法【2种方法】

    WPF实现图片合成或加水印的方法【2种方法】

    这篇文章主要介绍了WPF实现图片合成或加水印的方法,结合实例形式分析了2种比较实用的WPF图片操作相关技巧,需要的朋友可以参考下
    2017-03-03
  • C#实现简化QQ聊天窗口

    C#实现简化QQ聊天窗口

    这篇文章主要为大家详细介绍了C#实现简化QQ聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#多线程系列之线程完成数

    C#多线程系列之线程完成数

    本文详细讲解了C#多线程中的线程完成数,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#华氏温度和摄氏温度相互转换的方法

    C#华氏温度和摄氏温度相互转换的方法

    这篇文章主要介绍了C#华氏温度和摄氏温度相互转换的方法,涉及C#数学运算的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • C#实现的SN快速输入工具实例

    C#实现的SN快速输入工具实例

    这篇文章主要介绍了C#实现的SN快速输入工具,以实例的形式详细讲述了C#实现序列号快速输入的方法,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • C#表达式树的基本用法讲解

    C#表达式树的基本用法讲解

    这篇文章主要介绍了C#表达式树的基本用法讲解,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • C#实现NPOI的Excel导出详解

    C#实现NPOI的Excel导出详解

    这篇文章主要介绍了C#实现NPOI的Excel导出的示例代码,文中的实现过程讲解详细,对我们的学习或工作有一定的帮助,感兴趣的可以跟随小编一起学习一下
    2022-01-01
  • C#中实现契约测试的方法

    C#中实现契约测试的方法

    这篇文章主要介绍了C#中实现契约测试,在本文中,我将揭开契约测试的神秘面纱,并向您展示如何在 C# 项目中实现它,需要的朋友可以参考下
    2023-09-09

最新评论