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欢

             }

  • 相关阅读:
    【HDOJ】4412 Sky Soldiers
    【HDOJ】4579 Random Walk
    【HDOJ】4418 Time travel
    【HDOJ】4326 Game
    【HDOJ】4089 Activation
    【HDOJ】4043 FXTZ II
    【HDOJ】4652 Dice
    【HDOJ】3007 Buried memory
    mfc调用WPFDLL
    遍历系统中所有的进程,可根据名字或ID查找某一个线程
  • 原文地址:https://www.cnblogs.com/zcm123/p/2662036.html
Copyright © 2011-2022 走看看