关于截取字符串问题
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() --------------------编程问答--------------------
不是很明白意思,
从你给的字符串上来看,年后就是文件夹名称,
可以从这里开始取? --------------------编程问答-------------------- 先用Trim()再用split() --------------------编程问答-------------------- 如果有一个文件夹是这样的话 u _ s_ sy _ as
有2种方式 一种 split(' ') 然后连接字符成为u_s_sy_as 第二个 replace(" ","") 去除空格 看行不行我先去测试下
--------------------编程问答--------------------
--------------------编程问答-------------------- try...
//第一种
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
*/
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也是有空格的,现在就想取到带空格的文件名,要不然有路径,没有空格的文件名也访问不到文件夹啊! --------------------编程问答--------------------
Ruiz _Prada这中间是有空格的,“drwxrwxrwx folder 0 Apr 29 2011 A_Ruiz _Prada_277”这是一个字符串! --------------------编程问答--------------------
“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];
--------------------编程问答-------------------- 是有很多方法的,上面的你都可以试试 --------------------编程问答-------------------- 8楼的你试过没,有什么问题? --------------------编程问答-------------------- 你的意思是 有下划线的里面空格你要 其它的不需要么? 那试试过客的把,用正则貌似方便,对正则不太会啊 --------------------编程问答-------------------- trim() split() replace() 度可以,,可以选择一个 --------------------编程问答-------------------- A_Ruiz _Prada_277不确定这里面会有几个空格啊! --------------------编程问答--------------------
// 如果你能确定,在时间之前只有两个单词的话,也可以这样:
// 原始字符串
string strListDirectoryDetails = "drwxrwxrwx folder 0 Apr 29 2011 A_Ruiz _Prada_277";
// 分组
string[] arr = strListDirectoryDetails.Split(" ".ToCharArray(), 7, StringSplitOptions.RemoveEmptyEntries);
// 取到目录
string strFolder = arr[6];
这里关注的不是 目录名 里面有几个空格,而是在这之前有几个空格。
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