我有一个带有以下内容的字符串,用分号分隔:
echo $content
BCS3;BCS2;DigitalIO;GAElectricDrive;J1939;SKF15;UBloxGNSS;VIMS
也许我的问题是菜鸟,但我无法弄清楚,如何按字母顺序对这些值进行排序,例如我想收到以下输出(第一个和第二个元素不按字母顺序排列):
BCS2;BCS3;DigitalIO;GAElectricDrive;J1939;SKF15;UBloxGNSS;VIMS
答案 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