例如:他们是用";"分割的。但是文件夹名中是允许有";"和".doc".".txt"之类的字符出现的string str = @"D:\新建文件夹.txt;图片文件\图片.jpg;D:\NEW\新闻;文件.txt夹\焦点;新闻;D:\科技;文件.doc夹\科技.doc"其中D:\新建文件夹.txt;图片文件\图片.jpg;D:\新建文件夹.txt;图片文件\图片.jpg;D:\科技;文件.doc夹\科技.doc是文件名D:\NEW\新闻;文件.txt夹\焦点;新闻是文件夹名

解决方案 »

  1.   

    其中 D:\新建文件夹.txt;图片文件\图片.jpg;
    D:\科技;文件.doc夹\科技.doc 是文件名 D:\NEW\新闻;文件.txt夹\焦点;新闻 是文件夹名 
      

  2.   


    string[] strArray = str.Split(';');
    StringBuilder strFile = new ....//文件
     ............ strFolder .....  //文件夹
    for(int i=0; i<strArray.Count; i++)
    {
        if(strArray[i].LastIndexOf('.') > 0)
            strFie.Append(strArray[i]);
         else
            strFolder.Append(strArray[i]);
    }
      

  3.   

    问题是文件夹名中是允许有 ";"  ".doc"  ".txt"  之类的字符出现的 
    我要一起获取字符串里的文件名和文件夹名
      

  4.   

    可否这样:遍历这个字符串,遇到.txt和.doc时,若.txt或者.doc后面直接跟分号,则认为它是一个文件的结尾。
    否则,认为它是一个文件夹的一部分,继续遍历直到遇到文件结尾或者遇到D:等盘符但是这个方法也不能说准确,因为如果你有连续两个相对路径文件夹名而且其中带分号,那就没有办法了。
      

  5.   

    d:\123.txt
    你能告诉我这是个文件夹还是文件吗?答案是2个都可以 你可以在D盘下建立个叫123.txt的文件夹也可以建立个123.txt文本文件你这字符串没一个特殊字符 让人怎么判断
      

  6.   

    Path.GetFileName 方法
    Path.GetDirectoryName 方法 
      

  7.   

    下面的程序可以实现您要的功能,在vs 2005上调试通过:
        public void GetFolderFile()
         {        
                string str = @"D:\新建文件夹.txt;图片文件\图片.jpg;D:\NEW\新闻;文件.txt夹\焦点;新闻;D:\科技;文件.doc夹\科技.doc";            string[] substrings = str.Split(':');
                List<string> folders = new List<string>();
                List<string> files = new List<string>();
                for (int i = 1; i < substrings.Length; i++)
                {
                    if (substrings[i].LastIndexOf(".") < 0)
                    {//是文件夹
                        buildList(substrings[i - 1], substrings[i], folders, files, 0);
                    }
                    else
                    {
                        if (substrings[i].Substring(substrings[i].LastIndexOf(".")).Contains("\\"))
                        {//是文件夹
                            buildList(substrings[i - 1], substrings[i], folders, files, 0);
                        }
                        else
                        {//是文件
                            buildList(substrings[i - 1], substrings[i], folders, files, 1);
                        }
                    }
                }
                removeTail(folders);
                removeTail(files);        }        private void removeTail(List<string> list)
            {
                if (list.Count == 1)
                {
                    if (list[0].LastIndexOf(";") < list[0].Length - 1)
                    {
                        list[0] = list[0].Remove(list[0].Length - 1);
                    }
                }
                else
                {
                    for (int i = 0; i < list.Count - 1; i++)
                    {
                        list[i] = list[i].Remove(list[i].Length - 1);
                    }
                }
            }        private void buildList(string prefix, string current, List<string> folders, List<string> files, int mode)
            {
                if (mode == 0)
                    folders.Add(prefix.Substring(prefix.Length - 1) + ":" + current);//.Substring(0, current.Length - 1));
                else
                    files.Add(prefix.Substring(prefix.Length - 1) + ":" + current);//.Substring(0, current.Length - 1));
            }
      

  8.   

    FCL里提供了很好用的Path类有很多静态方法处理路径..
      

  9.   


    //仅供参考
                string str = @"D:\新建文件夹.txt;图片文件\图片.jpg;D:\NEW\新闻;文件.txt夹\焦点;新闻;D:\科技;文件.doc夹\科技.doc";
                string[] arr = Regex.Split(str, @"(?i);(?=$|(?:[a-z]:\\))");            Response.Write(string.Format("Input : {0}<br />", str));            string strType = string.Empty;            for(int i=0;i<arr.Length ;i++)
                {
                    strType=Regex.IsMatch(arr[i], @"(?i)\.[a-z0-9]{3,}$") ? "文件名" : "文件夹名";
                    //声明:文件后缀名没有做严格的过滤。
                    Response.Write(string.Format("{0} : {1} [Type:{2}]<br />", i, arr[i], strType));
                }
    /*
    //Result:Input : D:\新建文件夹.txt;图片文件\图片.jpg;D:\NEW\新闻;文件.txt夹\焦点;新闻;D:\科技;文件.doc夹\科技.doc
    0 : D:\新建文件夹.txt;图片文件\图片.jpg [Type:文件名]
    1 : D:\NEW\新闻;文件.txt夹\焦点;新闻 [Type:文件夹名]
    2 : D:\科技;文件.doc夹\科技.doc [Type:文件名] 
    */