我想使用PowerShell将C#的"using"语句排序到文件顶部。对于给定的输入文件File.cs,using语句如下:
using System.Reflection;
using System.Configuration;
using System.Runtime.Caching;
using System.Linq;
using System;
我希望输出结果中“using System”作为第一个“using”,但实际上Sort-Object将其排序到底部。我该如何更改以使其排在列表的顶部?
function Update-UsingStatements
{
param (
[Parameter(Mandatory=$true)][string]$FilePath
)
$fileLines = Get-Content $FilePath
$contents = $fileLines | Out-String
$list = New-Object 'System.Collections.Generic.List[string]'
$contents | Select-String -pattern 'using\s[\w\.]+;' -AllMatches | ForEach-Object {$_.Matches} | ForEach-Object { $list.Add($_.Value) }
$list = $list | Sort-Object
for ($i = 0; $i -lt $list.Count; $i++)
{
$fileLines[$i] = $list[$i]
}
$fileLines | Out-File $FilePath -Encoding utf8
}
$_.TrimEnd(';')
而不是-replace
。把它作为一个单独的答案发表似乎太浪费了,所以我只是在你的评论中添加选项。非常准确的答案Ansgar,干得好! - TheMadTechnician