Linux paylaşımına eşlenmiş bir sürücü ile çalışırken, dosya adları büyük/küçük harf duyarlıdır. PowerShell bunu beklendiği gibi ele alır, ancak çıktıyı "C" yerel ayarında kullanılan sıralama düzenine benzer bir şekilde sıralamak isterim. Bu, U + 0000'den artan şekilde U + 0'dan karakter sırasına göre sıralama anlamına gelir. istenenAlter Sort-Object davranış
PS > gci Z:\foo | sort -casesensitive
xyz
Xyz
XYZ
yZ
YZ
Çıkış: sorunu göstermek için
10FFFF değerinden ('bar' ve 'bar 'foo' önce gelir önce gelir 'foo' ve 'foo' önce, örneğin '0foo' gelir)
XYZ
Xyz
YZ
xyz
yZ
Geçerli iş parçacığı kültür değişkenlerini [System.Globalization.CultureInfo]::InvariantCulture
olarak ayarlamayı denedim Ama hiçbir başarı elde etti:
$thrd = [Threading.Thread]::CurrentThread
$thrd.CurrentCulture = [Globalization.CultureInfo]::InvariantCulture
$thrd.CurrentUICulture = $thrd.CurrentCulture
Am I o kültür bilgi ile ilgisi var varsayalım, ya da ben pist dışında gerçekten çok olduğumda bile yakın? Nereden başlamalıyım diye bir fikri olan var mı? Ben geçici olarak istediğim davranışa sahip bir CultureInfo örneğini oluşturmam gerektiğini tahmin ediyorum, ancak yalnızca CompareInfo'a kadar gidenler var, Sort-Object'in CompareInfo.Compare fonksiyonunu nasıl yükleyeceğinden emin değilim. PowerShell işlevlerini kullanmayı gerektirir. Ya da bu etkili bir kayıp bir sebeptir, çünkü bu mümkün değil mi?
Düzenleme En azından
, XYZ, Xyz, xyz'yi YZ, YZ olduğu gibi ilk büyük karakterlerle sıralamak mümkün olurdu?
'Sıra' ((http://stackoverflow.com/a/492885/2495 da [InvariantCulture ve Sıra dizge karşılaştırması arasındaki fark] bkz kendi kod noktası değerlerine dayanarak karakterleri karşılaştırır .NET karşılaştırmasıdır)). [Mitul'un cevabı] (http://stackoverflow.com/a/18544765/2495) ['[StringComparer] :: Ordinal'] ile (http://msdn.microsoft.com/en-us/library/system.stringcomparer) .ordinal.aspx) en iyi seçim gibi görünüyor. –