具体题目记不清了,类似于“010|北京,020|重庆,011|海淀,021|渝中”(请不要较真说021不是渝中。就这么个意思,)
要求输出:  
010|北京
--011|海淀
020|重庆
--021|渝中请问有什么好办法??

解决方案 »

  1.   

                //010|北京,020|重庆,011|海淀,021|渝中
                string str1 = "010|北京,020|重庆,011|海淀,021|渝中";
                string[] str2 =str1.Split(new Char[] {',' });
                foreach (string s in str2)
                {
                    if (s.Trim() != "")
                        Console.WriteLine(s);
                    Console.WriteLine(s.Substring(0, 3));
                }
                
                Console.ReadLine();如何对前三个字符进行排序?转换int?那就如何完整输出?谢谢。
      

  2.   

    如果code格式是定死的话,即nn0总是一个根节点,nnn总是一个子节点(n代表1-9)首先可以用字符串判断:
    HashTable rootMasks = new HashTable();
    foreach(string code ...
        if (code.EndsWith("0")) {
           这是根节点
            rootMasks.Add(code.SubString(0, 2), 根节点对象);
        }
       else {
           这是子节点
            根节点对象 = rootMasks[code.SubString(0, 2)];
           根节点对象.Children.Add(子节点对象);
       }
    }或者把code转换成int型:
    if((intCode % 10) == 0)
        这是根节点
    else {
        根节点Code = (intCode / 10) * 10;
        根据Code找到根节点
    }以上代码完全没有也不可能在编译器验证通过,请领会精神
      

  3.   


    static void Main(string[] args)
    {
        string test = "010|北京,020|重庆,011|海淀,021|渝中";
        string[] fields = test.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        var groups = fields.ToList().OrderBy(s => s.Substring(0, s.IndexOf('|'))).GroupBy(s => s.Substring(0,2));
        List<string> list = new List<string>();
        foreach (var g in groups)
        {
            list.Add(g.First());
            list.AddRange(g.Skip(1).ToList().Select(s => "--" + s));
        }
        foreach (string s in list)
        {
            Console.WriteLine(s);
        }
        Console.ReadKey();
    }
      

  4.   

    请问ToList()方法,需要引入哪个名称空间??谢谢
      

  5.   

    using System.Linq;
    vs2008,.net 3.0以上版本
    添加system.core.dll