私の配列はこれを吐き出しています。PowerShellソートアレイ
a10
a11
a12
a6
a7
a8
a9
にそれを修正するために、任意のショート/簡単なコード:
a6
a7
a8
a9
a10
a11
a12
私の配列はこれを吐き出しています。PowerShellソートアレイ
a10
a11
a12
a6
a7
a8
a9
にそれを修正するために、任意のショート/簡単なコード:
a6
a7
a8
a9
a10
a11
a12
式でソートし、最初の文字の後ろのすべてを取り出し、整数にキャストすることができます。
$array | sort { [int]$_.substring(1)}
また、任意の数字以外の文字を削除することによって解決策は、より汎用的にすることができます。
$array | sort { [int]($_ -replace '\D')}
この場合、最も簡単な方法は、ゼロ・パッドにすべての数字ことと、ソートのためにそれを使用します。
$a | sort {
[Regex]::Replace($_, '\d+',
{
$args[0].Value.PadLeft(10, '0')
})
}
私はあなたの評判がとても高く、優れた答えを持っている理由を知ります。 –
@Joey $ a | sort {$ _ -place '\ d +'、$ _。padleft(10、 '0')}は同じですか?またはこの方法で何か問題がありますか? –
あります。 '$ _'は完全な項目を指し、あなたの場合は一致しません。したがって、結果は 'a0000000001'ではなく' a00000000a1'です。おそらく文字列の中で複数の数字を扱うのをやめてしまうでしょうが、私は試しにあまりにも疲れています。上記の解は、数値を含む文字列のほぼすべてのリストを持つ自然なソートを生成するはずです。 – Joey
これらは進値、右? ;-)
2行目の "$ array | sort {[int]($ _ -replace '\ D')}"は "2012-03-02_log-X.txt"で埋め尽くされた配列を修正できました。ありがとうございました! –
FYI:文字列の配列を持っていて(スマート番号が問題になる)、必要なのは '$ array |ソート ' – JoeBrockhaus