class Test { static void Main() { List<string> list = new List<string>(); list.Add("2-3"); list.Add("2-4"); list.Add("2-5"); list.Add("6-7"); list.Add("6-8"); list = CombineString(list); foreach (string s in list) { Console.WriteLine(s); } Console.ReadLine(); } public static List<string> CombineString(List<string> list) { List<string> result = new List<string>(); List<string> firstLetters = new List<string>(); foreach (string s in list) { string first = s.Substring(0, 1); if (!firstLetters.Contains(first)) { firstLetters.Add(first); } } foreach (string s in firstLetters) { string temp = s; foreach (string i in list) { if (i.Substring(0, 1) == s) { temp += i.Substring(1); } } result.Add(temp); } return result; } } 写了一段代码 楼主可根据这个扩展
判断数组的第一个字符串,相同的归为一组
把一组的数组都插入到一个新数组中,每次插入前判断数组是否已存在,不存在才插入
然后用一个for循环,把数组中的值用"-"串起来存放到字符串变量中
谢谢。求代码。还有,你写错了,是Split('-')吧。。好像是单引号
string [] s1 = {"2-3","2-4","2-5"};
string s = String.Empty;
for (int i = 0; i < s1.Length; i++)
{
string[] s2 = s1[i].Split(new char[] { '-'});
if (s.StartsWith(s2[0]))
{
s += "-" + s2[1];
}
else
{
s = s1[i];
}
}类似这样?
string s1 = "2-3";
string s2 = "2-4";
string s3 = "2-5";
string s4 = "6-7";
string s5 = "6-8";
List<string> lists = new List<string>();
lists.Add(s1);
lists.Add(s2);
lists.Add(s3);
lists.Add(s4);
lists.Add(s5);
SortedList<int, object> valuelist = new SortedList<int, object>();
foreach (string temp in lists)
{
string[] svalue = temp.Split('-');
int key = int.Parse(svalue[0]);
if (valuelist.ContainsKey(key))
{
List<int> templist = valuelist[key] as List<int>;
templist.Add(int.Parse(svalue[1]));
}
else
{
List<int> templist = new List<int>();
templist.Add(int.Parse(svalue[1]));
valuelist.Add(key, templist);
}
}
lists.Clear();
for (int i = 0; i < valuelist.Count; i++)
{
int key = valuelist.Keys[i];
string tempstr = key.ToString();
List<int> templist = valuelist[key] as List<int>;
templist.Sort();
foreach (int num in templist)
{
if (num == key + 1)
{
tempstr += "-" + num.ToString();
}
else { break; }
++key;
}
lists.Add(tempstr); }
lists就是结果
{
string s1 = "2-3";
string s2 = "2-4";
string s3 = "2-5";
string s4 = "6-7";
string s5 = "6-8"; List<string> tt = new List<string>();
tt.Add(s1);
tt.Add(s2);
tt.Add(s3);
tt.Add(s4);
tt.Add(s5);
process(tt);
} void process(List<string> list)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (string s in list)
{
string t=s.Substring(0,1);
if (!dic.Keys.Contains(t))
{
dic.Add(t, s);
}
else
{
dic[t] +="-"+s;
}
}
foreach (string s in dic.Keys)
{
Response.Write(format(dic[s]));
Response.Write("<br/>");
}
} string format(string s)
{
string result = "";
string[] r = s.Split('-');
List<string> t = new List<string>();
foreach (string str in r)
{
if (!t.Contains(str))
{
t.Add(str);
result += str + "-";
}
}
if (result.Length > 0)
return result.Substring(0, result.Length - 1);
else
return result;
}
class Test
{
static void Main()
{
List<string> list = new List<string>();
list.Add("2-3");
list.Add("2-4");
list.Add("2-5");
list.Add("6-7");
list.Add("6-8");
list = CombineString(list);
foreach (string s in list)
{
Console.WriteLine(s);
}
Console.ReadLine();
} public static List<string> CombineString(List<string> list)
{
List<string> result = new List<string>();
List<string> firstLetters = new List<string>();
foreach (string s in list)
{
string first = s.Substring(0, 1);
if (!firstLetters.Contains(first))
{
firstLetters.Add(first);
}
}
foreach (string s in firstLetters)
{
string temp = s;
foreach (string i in list)
{
if (i.Substring(0, 1) == s)
{
temp += i.Substring(1);
}
}
result.Add(temp);
}
return result;
}
}
写了一段代码 楼主可根据这个扩展