编写一个截取字符串的函数

来源:互联网 发布:sql networkdays 编辑:程序博客网 时间:2024/05/21 08:56

题目:写一个函数,要求有2个参数,1个为字符串,1个为字节数,返回截取的字符串。
           要求字符串中的中文不能出现乱码:如(“我ABC”,4)应该截为"我AB",输入(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。

主要代码如下:
 class Program    {/*写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:       如(“我ABC”,4)应该截为“我AB”,输入(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。*/        /// <summary>        /// 截取字符串的方法        /// </summary>        /// <param name="str"></param>        /// <param name="index"></param>        /// <returns></returns>        public static string SubString(string str, int index)        {            int length = 0;            //用来存储截取的字符串            string strWords = "";            for (int i = 0; i < str.Length; i++)            {                //判断字符串的长度是否小于要截取的长度                if (length < index)                {                    //在ASCII码表中,英文的范围是0-127,而汉字则是大于127                    //判断是否为汉字                    if ((int)str[i] > 127)                    {                        //判断汉字是否为最后一个字符                        if (index - length > 1)                        {                            length += 2;                            strWords += str[i];                        }                        else                        {                            //最后一个字符为汉字,字符串长度加1,字符舍去                            length += 1;                        }                    }                    else //不是汉字                    {                        length += 1;                        strWords += str[i];                    }                }            }            return strWords;        }        static void Main(string[] args)        {            Console.WriteLine("请输入一句话:");            string input = Console.ReadLine();            Console.WriteLine("请输入要截取的位数:");            int total = Convert.ToInt32(Console.ReadLine());            //截取字符串            string SubStringWords = SubString(input, total);            Console.WriteLine(SubStringWords);            Console.ReadKey();        }    }

本做法虽然麻烦,但思路清晰。

原创粉丝点击