zoukankan      html  css  js  c++  java
  • c#中英文混合字符串截取指定长度

    //字符是否为汉字
            public bool IsChinese(char c)
            {
                return (int)c >= 0x4E00 && (int)c <= 0x9FA5;
            }
            //获得字节长度
            private int getLengthb(string str)
            {
                return System.Text.Encoding.Default.GetByteCount(str);
            }

            //c#的中英文混合字符串截取指定长度,startidx从0开始 by gisoracle@126.com
            public string getStrLenB(string str, int startidx, int len)
            {
                int Lengthb = getLengthb(str);
                if (startidx + 1 > Lengthb)
                {
                    return "";
                }
                int j = 0;
                int l = 0;
                int strw = 0;//字符的宽度
                bool b = false;
                string rstr = "";
                for (int i = 0; i < str.Length; i++)
                {
                    char c = str[i];
                    if (j >= startidx)
                    {
                        rstr = rstr + c;
                        b = true;
                    }
                    if (IsChinese(c))
                    {
                        strw = 2;
                    }
                    else
                    {
                        strw = 1;
                    }
                    j = j + strw;
                    if (b)
                    {
                        l = l + strw;
                        if ((l+1)>= len) break;

                    }


                }
                return rstr;

            }

            private void button4_Click(object sender, EventArgs e) //测试by yl gisoracle@126.com
            {
                MessageBox.Show(getStrLenB("gisoracle欢迎你gisoracle", 0, 10));//gisoracle
                MessageBox.Show(getStrLenB("gisoracle欢迎你gisoracle", 1, 10));//isoracle欢
                MessageBox.Show(getStrLenB("gisoracle欢迎你gisoracle", 2, 10));//isoracle欢
            }

  • 相关阅读:
    【Java】:判断数据类型
    【Shell编程】:多命令处理
    正则表达式
    26、DIEN(DIN的延伸)
    25、深层用户兴趣网络DIN(阿里)
    强化学习(7)---动态规划
    强化学习(6)---马尔可夫过程
    ubuntu出现终端和浏览器输入法不能显示中文,但是ubuntu software可以显示(fcitx)
    ASP.NET实现企业微信接入应用实现身份认证
    DevOps
  • 原文地址:https://www.cnblogs.com/gisoracle/p/1576879.html
Copyright © 2011-2022 走看看