假设有这样一个字符串"2, 3, 4, 5, 27, 28, 29, 100, 101, 333, 55, 56, 57, 1"
这个串都是数值组成的,用西文逗号分开(逗号后有无空格均可),其中有一些数值连续,有一些不连续;要处理成"1-5,27-28,100-101,333,55-56",就是像word打印编辑框内容一样就是处理完后,连续的用“开始-结束”,不连续的单独记录,之间用逗号分开

解决方案 »

  1.   

    解析字符串,同时用插入排序的方法保证解析后的整数值递增排列
    def list  <- 解析后的有序序列
    def begin = list[0];
    def end = list[0];
    for i from 1 to list.length-1
    {
         if (list[i] != list[i-1]+1)
         {
             end = list[i-1];
             printf(begin+"-"+end+",");
             begin = list[i];  
         }
    }
    以上是大概思路,没有调试。
      

  2.   

    CString有一个Tokenize成员函数,可以分割字符串
      

  3.   

    c语言中有一个strtok,好像能用上,大家亲自写一下这个串处理吧,好像挺复杂的!有可用的算法或程序,我绝对给分
      

  4.   

    先将源字符串通过Split方式分割成一个数组,然后将数组进行排序,然后通过排序后的数组,进行逐个数据进行比较,如果发现连续的就插入一个新的字符串中,然后加入逗号分割,然后继续往下查找,发现不连续的就单独插入。
      

  5.   

    strtok分析每一个数字, 然后再判断连续性, 再分段.