使用powershell从字符串中的每个单词中获取第一个字母

时间:2015-02-20 06:07:54

标签: regex powershell

有一个powersshell从DFS返回文件夹列表,我想将长文件夹名称缩减为它们的结果首字母缩略词。这就是我到目前为止,用下划线代替空间......

$folders = Get-DfsnFolder -Path "\\dfs\path\*"| %{$folder = $_.path.split("\"); $folder[4].replace(" ","_")}
foreach ($folder in $folders) { if ($folder.length -gt 24) {

if ($_.length -gt 20) { $_.split("?<=\_)[\_]+").substring(0,1); 
   <Do something here to put the letters back into $folders>
    }
}

基本上我想要一个首字母缩略词创作者

2 个答案:

答案 0 :(得分:1)

我不完全理解您为什么要使用下划线,对于短于20个字符的字符串是单独的要求吗?

无论如何,为了将一个字符串拆分为单词并仅返回每个单词的第一个字母,你可以像这样组合拆分和连接:

("this is a test" -split " " |% { $_[0] }) -join ""

结合您的代码,您可以使用以下内容:

$folders |% { 
  if($_.length -gt 20) {
    ( $_ -split " " |% { $_[0] } ) -join "" 
  } else {
    $_.replace(" ","_")
  }
}

答案 1 :(得分:0)

您可以使用Rename-Item cmdlet:

Rename-Item采用[目标路径]和[源路径]

Rename-Item $_.FullName $_.Name.Replace(' ','_') -Force #this is for the space to underscore `Replace`

Rename-Item $_.FullName $_.Name.Substring(0,1) -Force #this is for the first letter `Substring`