在C#中遇到指定文件夹时如何分割路径
提取指定文件夹起始的路径片段
Python 实现
通过字符串定位目标文件夹的位置,直接截取从该位置开始的路径部分,无需拆分重组整个路径:
def get_path_from_folder(full_path, target_folder): # 构造带反斜杠的目标字符串,避免匹配到包含目标名称的其他文件夹 target_str = f"\\{target_folder}\\" idx = full_path.find(target_str) if idx != -1: # 截取从目标文件夹开始的完整路径片段 return full_path[idx:] # 处理目标文件夹为路径最后一级的特殊情况 elif full_path.endswith(f"\\{target_folder}"): return f"\\{target_folder}" # 未找到目标文件夹时返回None return None # 测试示例 path1 = r"C:\AAA\BBB\FolderOfInterest\CCC\file.txt" path2 = r"C:\AAA\BBB\CCC\FolderOfInterest\DDD\EEE\file.txt" print(get_path_from_folder(path1, "FolderOfInterest")) # 输出: \FolderOfInterest\CCC\file.txt print(get_path_from_folder(path2, "FolderOfInterest")) # 输出: \FolderOfInterest\DDD\EEE\file.txt
PowerShell 实现
利用正则匹配快速定位目标文件夹,再截取对应路径片段:
function Get-PathFromFolder { param( [string]$FullPath, [string]$TargetFolder ) # 正则匹配目标文件夹(包含前后反斜杠,避免误匹配) $match = [regex]::Match($FullPath, "\\$TargetFolder\\?") if ($match.Success) { return $FullPath.Substring($match.Index) } # 未找到时返回null return $null } # 测试示例 $path1 = "C:\AAA\BBB\FolderOfInterest\CCC\file.txt" $path2 = "C:\AAA\BBB\CCC\FolderOfInterest\DDD\EEE\file.txt" Get-PathFromFolder -FullPath $path1 -TargetFolder "FolderOfInterest" Get-PathFromFolder -FullPath $path2 -TargetFolder "FolderOfInterest"
以上方法无需拆分路径为多级目录再重组,直接定位目标文件夹的位置即可完成提取,比手动拆分更简洁高效。
内容的提问来源于stack exchange,提问作者Valoon
相关产品推荐
相关产品推荐

