public partial class SubString : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.lblSub.Text = GetFirstString("中国人chinese", 7);
            this.lblSub2.Text = GetFirstString("afafaf你好", 7);
        }
 
        public  string getStr(string strInput, int intLen)
        {
            strInput = strInput.Trim();
            byte[] myByte = System.Text.Encoding.Default.GetBytes(strInput);
            Response.Write("getStr Function is::"+myByte.Length.ToString());
            if (myByte.Length > intLen)
            {
                //截取操作
                string resultStr = "";
                for (int i = 0; i < strInput.Length; i++)
                {
                    byte[] tempByte = System.Text.Encoding.Default.GetBytes(resultStr);
                    if (tempByte.Length < intLen)
                    {
                        resultStr += strInput.Substring(i, 1);
                    }
                    else
                    {
                        break;
                    }
                }
                return resultStr + "...";
            }
            else
            {
                return strInput;
            }
        }

public  string cutString(string strInput, int intLen)
        {
            strInput = strInput.Trim();
            byte[] myByte = System.Text.Encoding.Default.GetBytes(strInput);
            Response.Write("cutString Function is::" + myByte.Length.ToString());
            if (myByte.Length > intLen)
            {
                //截取操作
                string resultStr = "";
                for (int i = 0; i < strInput.Length; i++)
                {
                    byte[] tempByte = System.Text.Encoding.Default.GetBytes(resultStr);
                    if (tempByte.Length < intLen)
                    {
                      
                        resultStr += strInput.Substring(i, 1);
                    }
                    else
                    {
                        break;
                    }
                }
                return resultStr + "...";
            }
            else
            {
                return strInput;
            }
        }

public static string Fix(string s, int len)
        {
            string result = ""; //最终返回的结果
            int byteLen = System.Text.Encoding.Default.GetByteCount(s);  //单字节字符长度
            int charLen = s.Length; //把字符平等对待时的字符串长度
            int byteCount = 0;  //记录读取进度{中文按两单位计算}
            int pos = 0;    //记录截取位置{中文按两单位计算}
            if (byteLen > len)
            {
                for (int i = 0; i < charLen; i++)
                {
                    if (Convert.ToInt32(s.ToCharArray()[i]) > 255)  //遇中文字符计数加2
                        byteCount += 2;
                    else         //按英文字符计算加1
                        byteCount += 1;
                    if (byteCount >= len)   //到达指定长度时,记录指针位置并停止
                    {
                        pos = i;
                        break;
                    }
                }
                result = s.Substring(0, pos)+"...";
            }
            else
                result = s;

return result;
        }

#region  截短字串的函数,分区中英文
        /// <summary>
        /// 截短字串的函数
        /// </summary>
        /// <param name="mText">要加工的字串</param>
        /// <param name="byteCount">长度</param>
        /// <returns>被加工过的字串</returns>
        public string Left(string mText, int byteCount)
        {
            if (byteCount < 1) return mText;

if (System.Text.Encoding.Default.GetByteCount(mText) <= byteCount)
            {
                return mText;
            }
            else
            {
                byte[] txtBytes = System.Text.Encoding.Default.GetBytes(mText);
                byte[] newBytes = new byte[byteCount - 4];

for (int i = 0; i < byteCount - 4; i++)
                {
                    newBytes[i] = txtBytes[i];
                }

return System.Text.Encoding.Default.GetString(newBytes) + "...";
            }
        }
        #endregion

public static string GetFirstString(string stringToSub, int length)
        {
            Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
            char[] stringChar = stringToSub.ToCharArray();
            StringBuilder sb = new StringBuilder();
            int nLength = 0;
            bool isCut = false;
            for (int i = 0; i < stringChar.Length; i++)
            {
                if (regex.IsMatch((stringChar[i]).ToString()))
                {
                    sb.Append(stringChar[i]);
                    nLength += 2;
                }
                else
                {
                    sb.Append(stringChar[i]);
                    nLength = nLength + 1;
                }

if (nLength > length)
                {
                    isCut = true;
                    break;
                }
            }
            if (isCut)
                return sb.ToString() + "...";
            else
                return sb.ToString();
        }
    }

.Net 技术探讨群 4151320

欢迎大家加入!!!

转载于:https://www.cnblogs.com/happyday56/archive/2008/03/12/1101627.html

asp.net截取字符串方法相关推荐

  1. JAVA截取字符串方法

    //截取字符串方法 public static void main(String[] args) { String str="QW/E1/2/45"; //寻找最后一个" ...

  2. php str pa,php截取字符串方法有哪些

    php截取字符串方法有:1.使用substr函数截取字符串:2.使用mb_substr函数截取字符串:3.使用自定义的"function mysubstr($str, $start, $le ...

  3. C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...

  4. c++语言截取字符串,详解C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...

  5. vue 截取字符串方法

    vue 截取字符串方法 shutStr(){const str = 'abcdef';str = str.slice(0); //返回整个字符串 abcdefstr = str.substring(0 ...

  6. String 截取字符串方法——subString()

    String 截取字符串方法subString() String可以使用substring方法进行截取字符串有两种,参数可输入一个或者两个: 单参数:public String substring(i ...

  7. web前端js基础之js的几种“截取字符串”方法

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. c语言中截取字符串 sub,详解C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...

  9. shell截取字符串方法

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

最新文章

  1. 为什么要叫python-为什么叫Python
  2. 大学python用什么教材-数据结构 Python语言描述 大学教材
  3. php gd 行间距设置,PHP动态修改GD库扩展问题
  4. 今晚直播 | ICML 2021论文解读:基于Cox-MLP模型的二阶段共形预测
  5. 存储过程能用if not exist_C++核心准则T.48:如果不能用概念,用enable_if
  6. 如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型
  7. 大数据和云计算涉及的技术_云计算涉及的风险
  8. python没有错误但是不显示结果_python运行不报错又无任何结果输出
  9. solr带carrot2插件可以用配置好的solrconfig.xml
  10. 2020 — 只争朝夕,不负韶华
  11. 全栈必备 存储基础
  12. VMware虚拟机无法识别U盘解决方案
  13. java报错Error attempting to get column ‘XXX’ from result set. Cause: java.sql.怎么解决
  14. GIS地图基础知识--入门教程
  15. Aspose.3D使用教程:使用 Java 将 FBX 转换为 RVM 或 RVM 转换为 FBX 文件
  16. 黑客软件大众化 【爆吧机的出现】杨丞琳贴吧遭网友攻陷
  17. 一个C++程序员的学习经历
  18. 【物联网开发】正点原子STM32战舰v3+机智云AIoT+APP控制
  19. web课程设计网页规划与设计:HTML+CSS题材——我的家乡-沧州 6页 带报告
  20. 数据库中decimal

热门文章

  1. 什么是数据的表分区(文章附上Server 2005分区实施方案)
  2. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码
  3. (12)Verilog HDL变量:reg型
  4. 1010.gtest测试环境搭建
  5. js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
  6. java split函数_Java split函数
  7. 栈和队列之栈的定义和实现
  8. 网络协议栈深入分析(一)--与sk_buff有关的几个重要的数据结构
  9. Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02)
  10. ROS 教程之 navigation : 用 move_base 控制自己的机器人(2)