C# 如何将目录列表的全部或部分拆分为两个单独的字符串
我找到了一个实例,需要能够拆分给定目录列表/路径的一部分。在本例中,我有路径C# 如何将目录列表的全部或部分拆分为两个单独的字符串,c#,split,directory,C#,Split,Directory,我找到了一个实例,需要能够拆分给定目录列表/路径的一部分。在本例中,我有路径“C:\Program Files(x86)\MyApp\Data”或“C:\Program Files\MyApp\Data\myfile.txt”,我想删除\MyApp\Data\之前的所有内容,以便将来处理时使用它 我知道我可以做一些类似于下面的事情来分割每个目录,我可以从那里重建它,但是我希望能够分割不需要的路径信息——只保留相关的字符串 string mypath = @"C:\Program Files(x8
“C:\Program Files(x86)\MyApp\Data”
或“C:\Program Files\MyApp\Data\myfile.txt”
,我想删除\MyApp\Data\
之前的所有内容,以便将来处理时使用它
我知道我可以做一些类似于下面的事情来分割每个目录,我可以从那里重建它,但是我希望能够分割不需要的路径信息——只保留相关的字符串
string mypath = @"C:\Program Files(x86)\MyApp\Data";
string[] directories = mypath.Split(Path.DirectorySeparatorChar);
只需拆分MyApp\Data并删除第一个条目:
string mypath = @"C:\Program Files(x86)\MyApp\Data";
string[] directories = mypath.Split(new string[] {@"\MyApp\Data"}, StringSplitOptions.RemoveEmptyEntries);
string mySavePath = mypath.Remove(0, directories[0].Length);
Console.WriteLine(mySavePath);
只需从所需零件开始的位置提取一个子字符串:
string s1 = @"C:\Program Files(x86)\MyApp\Data";
string s2 = @"\MyApp\Data\";
int index = s1.IndexOf(s2);
if ( index >= 0 )
{
string end = s1.Substring(index);
string beg = s1.Substring(0, index);
}
但请考虑,如果在两个字符串的结尾处都有一个<代码> \/COD>符号:
int index = s1.IndexOf(s2.TrimEnd('\\'));
在您开始对硬编码字符串使用正则表达式之前,请告诉我们您将使用它做什么。您正在尝试获取用户安装的应用程序的数据目录的路径吗?它存储在AppDomain DataDirectory属性中。或者你想要跑步应用程序路径?这就是
System.Reflection.Assembly.getExecutionGassembly().Location
。这两个目录中有一个是您要查找的“给定目录”吗?路径是指向已安装应用程序的数据目录。我已在注册表中查询给定路径,并试图获取特定于应用程序的路径(例如.\MyApp\Data),如果s1不包含\MyApp\Data
,则索引(s2)
返回-1,导致s1出现异常。Substring
@trispid显然是这样。我想OP只需要找到正确的方向,而所有的角落案例他都能自己解决。