如题:
string str1="app\\aa\\bb\\cc.dll";
string str2="app\\bb\\ee.exe";
string str3="app\\cc.bat";求一个算法,我传入不同的string值,都可以获得这样的结果:
如果是strl,用集合添加的应该是:list.add("app","aa","bb");
一下类似......

解决方案 »

  1.   

    第一步操作:
    str1.split("\\");如果有小数点的情况,进行第二步操作:
    str.split(".");
    取小数点左边的数据
      

  2.   


                List<string> list = new List<string>();
                list.Add("app");
                list.Add("abc");
                list.Add("ab");
                string s = "";
                foreach (string str in list)
                {
                    if (String.IsNullOrEmpty(s))
                    {
                        s = str;
                    }
                    else
                    {
                        s = s + @"\\" + str;
                    }
                }
                MessageBox.Show(s);
      

  3.   

    这是我刚做出来的算法:
    private void sub(string str)
            {
                string strs=str.Substring(0, str.IndexOf("\\"));
                MessageBox.Show(strs);
                try
                {
                    string aa = str.Remove(0, str.IndexOf("\\")+1);
                    sub(aa);
                }
                catch { }
            }不过,如果你讲TYR{}CATCH{}去掉了,就可以看到异常,判断一下就可以了。
      

  4.   

               List<string> list = new List<string>();
               string stemp = "app\\aa\\bb\\cc.dll";
                MatchCollection mstr = Regex.Matches(stemp, @"([\w.\w]*)");
                for (int i = 0; i < mstr.Count; i++)
                {
                    list.add(mstr[i].Groups[1].Value);  
                }
      

  5.   

    建议用?<data>这样的方式啊...
    曾经维护一个程序,解析命令用了Groups[1]这样的方式,后来命令模式稍微改一下,我这里Groups后面的数字全部乱套了...苦不堪言...
      

  6.   

     不应该用星号,应该用加好
     MatchCollection mstr = Regex.Matches(stemp, @"([\w\d.]+)");
     可以有数字、字母、点号,出现一次
      

  7.   

    用括号确定groups,不可能乱套
      

  8.   

    直接处理比较麻烦,最好添加一个头上的斜杠,变成“\\app\\aa\\bb\\cc.dll”然后用下面的正则捕获\\\\(\w+)(?!.dll|.exe|.bat)\b
      

  9.   

    如果字符串一定都带文件名,那还有个偷懒的办法,“ \\”替换成"|",然后按“|”split,数组的最后一个不要就行了。