Powershell排序由分号分隔的字符串元素

时间:2018-06-15 11:55:34

标签: powershell sorting

我有一个带有以下内容的字符串,用分号分隔:

echo $content

BCS3;BCS2;DigitalIO;GAElectricDrive;J1939;SKF15;UBloxGNSS;VIMS

也许我的问题是菜鸟,但我无法弄清楚,如何按字母顺序对这些值进行排序,例如我想收到以下输出(第一个和第二个元素不按字母顺序排列):

BCS2;BCS3;DigitalIO;GAElectricDrive;J1939;SKF15;UBloxGNSS;VIMS

1 个答案:

答案 0 :(得分:2)

$Content = "BCS3;BCS2;DigitalIO;GAElectricDrive;J1939;SKF15;UBloxGNSS;VIMS"

$Content = ($Content -split ';'|Sort) -Join ';'

$content
BCS2;BCS3;DigitalIO;GAElectricDrive;J1939;SKF15;UBloxGNSS;VIMS

但排序是按字母顺序排列的,包含不同位置数字的单词排序为1,10,100,2,20,200。

为避免这种情况,您可以使用$ToNatural

$ToNatural = { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }
$Content = "1;10;100;2;20;200"
$Content = ($Content -split ';'|Sort $ToNatural) -Join ';'
$content
1;2;10;20;100;200