黑马程序员技术交流社区

标题: 截取字符串 [打印本页]

作者: 芦路    时间: 2013-11-1 09:34
标题: 截取字符串
本帖最后由 芦路 于 2013-11-1 17:36 编辑

怎么定义一个方法  参数就是截取字符串的长度之类的  比方说111222333,就是每三个截取一次 怎么弄啊

作者: 蒋东东    时间: 2013-11-1 10:56
问题不是很明白。是这个意思么?
  1. <p>class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Console.WriteLine("请输入一个字符串:");
  6.             string input = Console.ReadLine();
  7.             Console.WriteLine("请输入平均截取字符串个数:");
  8.             int n = Convert.ToInt32(Console.ReadLine());

  9.             string[] results = NewSubString(input, n);

  10.             Console.WriteLine("截取结果:");
  11.             foreach (string res in results)
  12.             {
  13.                 Console.WriteLine(res);
  14.             }
  15.             Console.ReadKey();
  16.         }

  17.         /// <summary>
  18.         /// 根据截取个数截取字符串
  19.         /// </summary>
  20.         /// <param name="str">所截取的字符串</param>
  21.         /// <param name="n">截取个数</param>
  22.         /// <returns></returns>
  23.         static string[] NewSubString(string str, int n)
  24.         {
  25.             List<string> result = new List<string>();
  26.             string remainStr = str;
  27.             while (true)
  28.             {
  29.                 //不足截取个数的剩余字符串则表示最后一个
  30.                 if (remainStr.Length < n)
  31.                 {
  32.                     result.Add(remainStr);
  33.                     break;
  34.                 }

  35.                 //截取剩余字符串的前n个
  36.                 string subStr = remainStr.Substring(0, n);
  37.                 result.Add(subStr);

  38.                 //截取后的剩余字符串
  39.                 remainStr = remainStr.Substring(n);
  40.             }

  41.             return result.ToArray();
  42.         }
  43.     }</p><p> </p>
复制代码


作者: 夢醒了⊙﹏⊙b心    时间: 2013-11-1 11:55
首先顶一个字符串
获取截取的字符串长度  
调用PrintString()
Public void PrintString(string strInput,int num)
{
for(int i=strInput.Length-1;i>=0;i--)
{
   if(i!=0&&i%num==0)
   {
      Console.Write(strInput[i]+"\t");
   }
}
Console.ReadKey();
}
作者: 猫咪不吃糖    时间: 2013-11-1 14:32
  1.         static void Main(string[] args)
  2.         {
  3.             string str = "111233444";
  4.             string str1, str2;
  5.             str1 = str.Substring(0, 3);
  6.             str2 = str.Substring(3);
  7.             Console.WriteLine(str1);
  8.             Console.WriteLine(str2);
  9.             Console.ReadKey();
  10.         }
复制代码

作者: 佟嘉豪    时间: 2013-11-1 14:48
我来简单说一下:
这个用函数递归,比较好实现
声明一个函数 参数为字符串
1、判断字符串的长度
1)if >3  {
则substring(0,3)
输出
获取(3+1)的字符串
再次调用这个函数
}
else
直接输出
作者: 黑飞马    时间: 2013-11-1 17:27
class Program
    {
        static void Main(string[] args)
        {
            string str = "abcdefghijklmnopqrstuvwxyz";

            string[] strs = getStringPat(str, 3);
            
            Console.WriteLine("原字符串是"+str);

            Console.Write("截取后的字符分别是:");
            for (int i = 0; i < strs.Length; i++)
            {
                Console.Write(strs+"\t");
            }

                Console.ReadKey();
        }

        /// <summary>
        /// 截取固定长度的字符串
        /// </summary>
        /// <param name="str">要截取的字符串</param>
        /// <param name="num">每段有多少个字符</param>
        /// <returns>截取后的每段字符</returns>

        static string[] getStringPat(string str,int num)
        {
            int duanshu = str.Length / num;//计算能截取多少段
            
            //其实我不是用的截取。而是变相的用了一下插入,在num个数后插入一个逗号,然后再用split方法,截取字符串
            //其中i表示第几段。从0开始,换句话说就是我要插入几个逗号


            for (int i = 0; i < duanshu; i++)
            {
                int index=(i * (num + 1))+num ;//这是要插入逗号的位置
                str = str.Insert(index, ",");//插入
            }

            string[] strs = str.Split(',');//分割字符串
            return strs;
        }
    }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2