当前位置:编程学习 > C#/ASP.NET >>

关于截取字符串问题

drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277
上面是一个string类型的字符串,A_Ruiz _Prada_277这个是文件夹名称,但是名字里面有空格(空格数量未知),如何截取A_Ruiz _Prada_277这个文件夹名字呢, 求高手指导! 我这个是ftp读取文件夹,因为要判断是文件夹还是文件,所以要用WebRequestMethods.Ftp.ListDirectoryDetails;(返回文件夹详细信息),求指导!现在用的,split(" "),文件夹名称里面有空格会报错! --------------------编程问答-------------------- 顶一个,在线等大牛! --------------------编程问答-------------------- A_Ruiz _Prada_277 这个名称里有空格么?  _代表空格? --------------------编程问答-------------------- 先用Trim()再用split() --------------------编程问答--------------------
引用 楼主 sunzheng110 的回复:
drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277
上面是一个string类型的字符串,A_Ruiz _Prada_277这个是文件夹名称,但是名字里面有空格(空格数量未知),如何截取A_Ruiz _Prada_277这个文件夹名字呢, 求高手指导! 我这个是ftp读取文件夹,因为要判断是文件夹还是文件,……

不是很明白意思,
从你给的字符串上来看,年后就是文件夹名称,
可以从这里开始取? --------------------编程问答-------------------- 先用Trim()再用split() --------------------编程问答-------------------- 如果有一个文件夹是这样的话 u _   s_  sy _ as
有2种方式 一种 split(' ') 然后连接字符成为u_s_sy_as 第二个 replace(" ","") 去除空格 看行不行我先去测试下
  --------------------编程问答--------------------

//第一种
            string filename = null;
            string str = "u _   s_  sy _ as";
            string[] strs = str.Split(' ');
            foreach (string s in strs)
            {
                filename += s;
            }
            Console.Write(filename);
            Console.Read();
/*
输出:u_s_sy_as
*/

//第二种
            string str = "u _   s_  sy _ as";
            str=str.Replace(" ","");
            Console.Write(str);
            Console.Read();
/*
输出:u_s_sy_as
*/
--------------------编程问答-------------------- try...

Regex reg = new Regex(@"(?m)^\s*(?:\S+\s*){5}\d{4}\s*(.+)$");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
    richTextBox2.Text += m.Groups[1].Value + "\n";
}


看下吧,如果有的行结果不对,正则可以写的再细点 --------------------编程问答-------------------- 可以用SubString截取字符串 --------------------编程问答-------------------- 方法很多啊!!!! --------------------编程问答-------------------- --------------------编程问答--------------------

string strListDirectoryDetails = "drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277";
string strFolder = 
strListDirectoryDetails.Substring(strListDirectoryDetails.LastIndexOf(' '));
--------------------编程问答-------------------- 详细说一下
“drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277” 这个是一个字符串,"A_Ruiz _Prada_277"这个是文件名,中间Ruiz _Prada也是有空格的,现在就想取到带空格的文件名,要不然有路径,没有空格的文件名也访问不到文件夹啊! --------------------编程问答--------------------
引用 2 楼 q107770540 的回复:
A_Ruiz _Prada_277 这个名称里有空格么?  _代表空格?


Ruiz _Prada这中间是有空格的,“drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277”这是一个字符串! --------------------编程问答--------------------
引用 7 楼 peng2739956 的回复:
C# code?



1234567891011121314151617181920212223

//第一种             string filename = null;             string str = "u _   s_  sy _ as";             string[] strs = str.Split(' ');            ……


“drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277”这个是一个字符串,我现在就是想得到年后面的”A_Ruiz _Prada_277“这里面的空格是要的,要不然没办法访问文件夹啊! --------------------编程问答--------------------


        // 原始字符串
        string strListDirectoryDetails = "drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277";

        // 截取folder后面的部分
        string strFolder = strListDirectoryDetails.Substring(strListDirectoryDetails.LastIndexOf(" folder ") + 8).Trim();

        // 分组
        string[] arr = strFolder.Split(" ".ToCharArray(), 5, StringSplitOptions.RemoveEmptyEntries);

        // 取到目录
        strFolder = arr[4];

--------------------编程问答--------------------

// 如果你能确定,在时间之前只有两个单词的话,也可以这样:

        // 原始字符串
        string strListDirectoryDetails = "drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277";

        // 分组
        string[] arr = strListDirectoryDetails.Split(" ".ToCharArray(), 7, StringSplitOptions.RemoveEmptyEntries);

        // 取到目录
        string strFolder = arr[6];

--------------------编程问答-------------------- 是有很多方法的,上面的你都可以试试 --------------------编程问答-------------------- 8楼的你试过没,有什么问题? --------------------编程问答-------------------- 你的意思是 有下划线的里面空格你要 其它的不需要么? 那试试过客的把,用正则貌似方便,对正则不太会啊 --------------------编程问答-------------------- trim()  split()   replace()  度可以,,可以选择一个 --------------------编程问答--------------------
引用 17 楼 sunny6281 的回复:
C# code?123456789101112// 如果你能确定,在时间之前只有两个单词的话,也可以这样:         // 原始字符串        string strListDirectoryDetails = "drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277";  ……
  A_Ruiz _Prada_277不确定这里面会有几个空格啊! --------------------编程问答--------------------
引用 22 楼 sunzheng110 的回复:
引用 17 楼 sunny6281 的回复:C# code?123456789101112// 如果你能确定,在时间之前只有两个单词的话,也可以这样:         // 原始字符串        string strListDirectoryDetails = "drwxrwxrwx               folder        0 Apr 29  2011……


这里关注的不是 目录名 里面有几个空格,而是在这之前有几个空格。

string[] arr = strListDirectoryDetails.Split(" ".ToCharArray(), 7, StringSplitOptions.RemoveEmptyEntries);

其中, 7表示要把字符串拆成7个串,也就是说,目录名 之前有6个空格

其实这种判定有很大的不确定性,所以个人觉得还是这种比较妥当:

        // 原始字符串
        string strListDirectoryDetails = "drwxrwxrwx               folder        0 Apr 29  2011 A_Ruiz _Prada_277";
 
        // 截取folder后面的部分
        string strFolder = strListDirectoryDetails.Substring(strListDirectoryDetails.LastIndexOf(" folder ") + 8).Trim();
 
        // 分组
        string[] arr = strFolder.Split(" ".ToCharArray(), 5, StringSplitOptions.RemoveEmptyEntries);
 
        // 取到目录
        strFolder = arr[4];


这里不是判断空格,而是根据 folder 这个关键词判断的,只要你能确定,你的字符串格式是
XXXX   folder 月 日 年 目录名
这样的格式,那就行

--------------------编程问答-------------------- Trim() split()  --------------------编程问答-------------------- 直接写个正则好了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,