类似下面几个字符串
00101112
00101113
00101114
00101118
00101119
00101120
想把他们连成如下形式
00101112-4,00101118-20
即连续的用-线分开,不连续的用,分开
谁能提供个算法,感激不尽

解决方案 »

  1.   

    List<string> list = new List<string>();
                list.Add("00101112");
                list.Add("00101113");
                list.Add("00101114");
                list.Add("00101118");
                list.Add("00101119");
                list.Add("00101120");
                list.Add("00101125");
                list.Add("00101126");
                string result = list[0];
                int lastIndex = 0;
                for (int i = 1; i < list.Count;i++ )
                {
                    if (Convert.ToInt32(list[i- 1]) + 1 != Convert.ToInt32(list[i]))
                    {
                        result += "-" + list[i - 1] + "," + list[i];
                        lastIndex = i;
                    }
                }
                if (lastIndex != list.Count - 1)
                {
                    result += "-" + list[list.Count - 1];
                }
                else
                {
                    result += "," + list[list.Count - 1];
                }稍微改下就可以了
      

  2.   

    private string JoinNumbers(string[] numbers)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(numbers[0]);    for (int i = 1; i < numbers.Length; i++)
        {
            string strA = numbers[i - 1].TrimStart('0');
            string strB = numbers[i].TrimStart('0');
            int a = int.Parse(strA);
            int b = int.Parse(strB);
            if (1 == (b - a))
            {
                sb.Append("-");
            }
            else
            {
                sb.Append(",");
            }
            sb.Append(numbers[i]);
        }
        return sb.ToString();
    }
    =============
    调用:string[] numbers = new string[] {
    "00101112",
    "00101113",
    "00101114",
    "00101118",
    "00101119",
    "00101120"
    };
    string result = JoinNumbers(numbers);
      

  3.   

    private string JoinNumbers(string[] numbers)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(numbers[0]);            for (int i = 1; i < numbers.Length; i++)
                {
                    string strA = numbers[i - 1].TrimStart('0');
                    string strB = numbers[i].TrimStart('0');
                    int a = int.Parse(strA);
                    int b = int.Parse(strB);
                    if (1 != (b - a))
                    {
                        sb.Append("-" + GetDifferent(numbers[i - 2], numbers[i - 1]));
                        sb.Append(",");
                        sb.Append(numbers[i]);
                    }
                }
                return sb.ToString();
            }        string GetDifferent(string str1, string str2)
            {
                for (int i = 0; i < str1.Length; i++)
                {
                    if (str1.Substring(i, 1) != str2.Substring(i, 1))
                        return str2.Substring(i);
                }
                return "";
            }//////
                    string[] numbers = new string[] {
                        "00101112",
                        "00101113",
                        "00101114",
                        "00101118",
                        "00101119",
                        "00101120"
                        };
                    string a = JoinNumbers(numbers);完整一下就行.