Powershell 在每行的最后一个字符实例上分割

nom*_*nom 3 arrays powershell split

/我尝试使用 Powershell 在每行最后一次出现分隔符 ( ) 时拆分字符串数组。示例输入数组:

classes/CaseHandler.cls
email/Insurance_Templates/Policy_Amend_Approval_Request.emailcode here
Run Code Online (Sandbox Code Playgroud)

运行命令$arr -split '/'给出以下结果:

classes
CaseHandler.cls
email
Insurance_Templates
Policy_Amend_Approval_Request.email
Run Code Online (Sandbox Code Playgroud)

这对于类文件来说很好,因为我需要第一行的文件夹路径和第二行的文件名。然而,输入中的许多文件具有更深的文件路径。我正在寻找一种方法,仅在字符最后一次出现时分割数组的每一行/。所需的输出是:

classes
CaseHandler.cls
email/Insurance_Templates
Policy_Amend_Approval_request.email
Run Code Online (Sandbox Code Playgroud)

我已经尝试了多种使用子字符串方法的方法,但无法弄清楚如何将其合并到逐行分割数组中。对此的任何帮助将不胜感激。

Don*_*ank 5

由于您正在处理文件名,因此应该使用Split-Pathcmdlet:

PS> $paths = "classes/CaseHandler.cls", `
             "email/Insurance_Templates/Policy_Amend_Approval_Request.emailcode"
Run Code Online (Sandbox Code Playgroud)

要获取目录部分:

PS> $paths | Split-Path
classes
email\Insurance_Templates
Run Code Online (Sandbox Code Playgroud)

要获取文件部分:

PS> $paths | Split-Path -Leaf
CaseHandler.cls
Policy_Amend_Approval_Request.emailcode
Run Code Online (Sandbox Code Playgroud)

将它们放在一起以获得您想要的格式:

PS> $paths | % { Split-Path $_ ; Split-Path -Leaf $_ }
classes
CaseHandler.cls
email\Insurance_Templates
Policy_Amend_Approval_Request.emailcode
Run Code Online (Sandbox Code Playgroud)