博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
完美分割字符串,实现字符串的splict功能
阅读量:5086 次
发布时间:2019-06-13

本文共 1428 字,大约阅读时间需要 4 分钟。

class Str:Client_C    

{        

  string val;        

  string[] str = new string[100];      

  public void StrT1()        

  {            

    //1.正常情况            

    //2.两个分隔符相邻            

    //3.以分隔符开始或者结束。            

    //如果只有一次,做个细小的改变,让他跟随又规律的其他            

    int nIdx = -1;            

    int xIdn = val.IndexOf(',', 0);  //必须从0开始,而不是现在的nIdx=-1

            int maxIdn = val.Length-1;            

    int i = 0;                        

    while (xIdn <= maxIdn && xIdn!=-1)            

    {

                  nIdx++;//将到达正式字符串,从此开始截取。,,hh                 //1.以分隔符开始,或者相邻,处理特殊情况                                if (nIdx == xIdn)                

      {                    

        str[i++] = "";                     //在小于最大索引的情况下递增,等于最大都不往下找了                    

        if (xIdn < maxIdn)                    

        {                        

          //nIdx不变,寻找下一个Idx                        

          xIdn = val.IndexOf(',', nIdx + 1);                        

          continue;                    

        }                    

        else //如果nIdx == xIdn,那么nIdx不变,xIdx该成-1,代表结束                    

        {                        

          xIdn = -1;                        

          break;                    

        }                

      }                

      str[i++] = val.Substring(nIdx, xIdn - nIdx); 

      //想想为什么是xIdx-nIdx,想想什么是下标,现在的nIdx和xIdx各代表什么,在什么位置。                

      nIdx = xIdn;                 //从后一个分隔符的下一个标记开始查                

      xIdn = val.IndexOf(',', nIdx+1);            

    }            

    //最后一次的时候,xIdn失效-1,同时也处理了以分隔符结束的情况,截取0个字符串的时候,结果为空,恰好            

    //没经过while循环内的nIdx++,标记还停留在分隔符位置,所以要从nIdx+1开始            

    str[i] = val.Substring(nIdx+1, maxIdn - nIdx);//nIdx还未加1,计算长度的时候,直接相减恰好

    Print();        

}        

public void Print()        

{            

  StringBuilder sb = new StringBuilder();            

  foreach (string item in str)            

  {                

    sb.Append(item + "  ");            

  }            

  Console.WriteLine(sb.ToString());        

}

        public void Client()        

   {

            StrT1();        

  }    

}

 

 

总结:编程的关键不在于处理好常规情况,而是处理好特殊情况,然后将两种情况结合起来。

转载于:https://www.cnblogs.com/Ellfelo/p/sd.html

你可能感兴趣的文章
【Vegas原创】Mysql绿色版安装方法
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
.NET下XML文件的读写
查看>>
2009程序员考试大纲
查看>>
Linq to XML
查看>>
[HDOJ3718]Similarity(KM算法,二分图最大匹配)
查看>>
Nexus Repository3安装和maven,npm配置(Linux)
查看>>
a 标签中调用js的几种方法
查看>>
从SQL Server 2005 中 导入 导出 excel 表格
查看>>
R Shiny(开源的R包)
查看>>
用Tensorflow做蝴蝶检测
查看>>
Hbuilder编辑器 设置less即时编译环境
查看>>
flash builder 调试问题。由于现有版本正在使用中,因此无法安装flash player
查看>>
null 和 undefined 的区别
查看>>
Educational Codeforces Round 56 Editorial
查看>>
BCD码(二-十进制)
查看>>
使用JavaScript扫描端口
查看>>
qdtuling.xyz 7.8
查看>>
Java工程师成神之路
查看>>
【canvas】先绘制标准图形,在进行图形变换
查看>>