程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#中英文混合字符串截取指定長度

c#中英文混合字符串截取指定長度

編輯: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 [email protected]
        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 [email protected]
        {
            MessageBox.Show(getStrLenB("gisoracle歡迎你gisoracle", 0, 10));//gisoracle
            MessageBox.Show(getStrLenB("gisoracle歡迎你gisoracle", 1, 10));//isoracle歡
            MessageBox.Show(getStrLenB("gisoracle歡迎你gisoracle", 2, 10));//isoracle歡
        }

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved