类似下面几个字符串
00101112
00101113
00101114
00101118
00101119
00101120
想把他们连成如下形式
00101112-4,00101118-20
即连续的用-线分开,不连续的用,分开
谁能提供个算法,感激不尽
00101112
00101113
00101114
00101118
00101119
00101120
想把他们连成如下形式
00101112-4,00101118-20
即连续的用-线分开,不连续的用,分开
谁能提供个算法,感激不尽
解决方案 »
- IEnumerable<T>.Where(Predicate<T>)返回的集合可以看作是new出一个新的集合吗?
- 背景透明
- XP上能装sqlserver吗
- 请教RichTextBox的字体设置问题
- 提供:仿Delphi/BCB中的TStringList,用C#完成了一个StringList
- C#运行环境问题,随便一个C#小程序都要安装framework,痛苦中...
- +++++++++存储过程问题?它难道只用于数据的插入和更新???????
- 能在C#程序里用的二维码生成器及扫描器
- 请问在哪能搞到C#支持Word控件?并且怎么安装?
- 动态生成图表!!高分!!
- 数据访问层(进来聊聊)
- C# 窗口调用
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];
}稍微改下就可以了
{
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);
{
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);完整一下就行.