PowerShell Kullanarak Bir Dizideki Birden Çok Dize Nasıl Değiştirilir?
Son zamanlarda bazı dize manipülasyonları yapıyordum ve bir PowerShell dizisindeki birden çok dizeyi değiştirmek istedim. Dört yöntem denedim. Bu eğitimde size PowerShell kullanarak bir dizideki birden çok dizeyi nasıl değiştireceğinizi göstereceğim.
PowerShell kullanarak bir dizideki birden çok dizeyi değiştirmek için normal ifadeleri destekleyen -replace operatörünü kullanabilirsiniz. Örneğin, @(“CA”, “NY”, “TX”, “FL”) durum kısaltmalarından oluşan bir diziniz varsa, bunları $states=$states -replace “CA” kullanarak tam durum adlarıyla değiştirebilirsiniz. "Kaliforniya"; $states=$states -“NY”, “New York” yerine; $states=$states -“TX”, “Texas” yerine; $states=$states -"FL", "Florida" yerine.
Yöntem 1: -replace Operatörünü Kullanma
PowerShell'deki -replace operatörü dizeleri değiştirmenin en kolay yoludur. Düzenli ifadeler kullanır. PowerShell'deki -replace operatörünü kullanarak bir dizideki birden çok dizeyi nasıl değiştirebileceğiniz aşağıda açıklanmıştır.
Size bir örnek göstereyim.
Örnek
Kısaltmaları tam durum adlarıyla değiştirerek standartlaştırmak istediğiniz durum adları ve kısaltmalardan oluşan bir dize diziniz olduğunu varsayalım.
Aşağıda PowerShell betiği bulunmaktadır.
$states = @("CA", "NY", "TX", "FL", "CA", "NY")
# Replace state abbreviations with full names
$states = $states -replace "CA", "California"
$states = $states -replace "NY", "New York"
$states = $states -replace "TX", "Texas"
$states = $states -replace "FL", "Florida"
$statesBu örnekte, her durum kısaltmasını tam adıyla değiştirmek için -replace operatörünü kullanıyoruz.
Çıkış :
California
New York
Texas
Florida
California
New YorkYukarıdaki PowerShell betiğini VS kodunu kullanarak çalıştırdım ve değiştirdikten sonra bana tam çıktıyı gösteriyor. Aşağıdaki ekran görüntüsüne göz atın:
PowerShell'de Dizi İçeriğini Kontrol Et
Yöntem 2: Change() Yöntemini Kullanma
Replace() yöntemi, PowerShell'deki dizeleri değiştirmenin başka bir yoludur. Bu yöntem büyük/küçük harfe duyarlıdır ve normal ifadeler kullanmaz.
Size PowerShell'deki bir dizideki birden çok dizeyi değiştirmek için replacement() yönteminin nasıl kullanılacağına dair bir örnek göstereyim.
Örnek
Düzeltmek istediğiniz yaygın yazım hatalarına sahip bir dizi şehir adınızın olduğunu varsayalım.
$cities = @("Los Angles", "San Fransisco", "New Yrok", "Chcago")
# Correct common typos
$cities = $cities.ForEach{ $_.Replace("Los Angles", "Los Angeles") }
$cities = $cities.ForEach{ $_.Replace("San Fransisco", "San Francisco") }
$cities = $cities.ForEach{ $_.Replace("New Yrok", "New York") }
$cities = $cities.ForEach{ $_.Replace("Chcago", "Chicago") }
$citiesForEach yöntemi dizideki her öğe üzerinde yinelenir ve yazım hatalarını düzeltmek için Replace() yöntemini uygular.
Çıkış :
Los Angeles
San Francisco
New York
ChicagoBurada yukarıdaki PowerShell betiğini çalıştırdıktan sonra aşağıdaki ekran görüntüsünde çıktıyı görebilirsiniz.
PowerShell'de Bir Diziyi Dizeye Nasıl Dönüştürürsünüz? konusuna göz atın.
Yöntem 3: Toplu Değiştirmeler için Hashtable Kullanma
Birden fazla değişiklik için, özellikle büyük bir veri kümesiyle çalışırken karma tablo kullanmak, komut dosyanızı daha verimli ve bakımı kolay hale getirebilir. Size bir örnek göstereyim.
Örnek
Hashtable kullanarak eyalet kısaltmalarının listesini tam adlarıyla güncelleyelim.
$states = @("CA", "NY", "TX", "FL", "CA", "NY")
$replacements = @{
"CA" = "California"
"NY" = "New York"
"TX" = "Texas"
"FL" = "Florida"
}
# Replace abbreviations using the hashtable
$states = $states.ForEach{
$replacements.ContainsKey($_) ? $replacements[$_] : $_
}
$statesBu örnekte, kısaltmaların eşlemelerini tam adlarla depolamak için bir karma tablosu kullanıyoruz. ForEach yöntemi, geçerli öğenin hash tablosunda mevcut olup olmadığını kontrol eder ve onu buna göre değiştirir.
Çıkış:
California
New York
Texas
Florida
California
New YorkAyrıca aşağıdaki ekran görüntüsündeki çıktıya da göz atabilirsiniz, yukarıdaki PowerShell betiğini çalıştırdığınızda tam çıktıyı alacaksınız.
Yöntem 4: Özel İşlevleri Kullanma
Bu son yöntemdir. PowerShell'de bir dizideki birden çok dizeyi değiştirmek için yeniden kullanabileceğiniz özel bir işlev oluşturabilirsiniz.
İşte bir örnek.
Örnek
Tek tip bir formatta standartlaştırmak istediğiniz, çeşitli formatlardaki bir dizi telefon numarasını düşünün.
$phoneNumbers = @("(123) 456-7890", "123.456.7890", "123-456-7890", "1234567890")
function Normalize-PhoneNumber {
param (
[string]$number
)
# Remove non-numeric characters
$number = $number -replace "\D", ""
# Format as (XXX) XXX-XXXX
return "({0}) {1}-{2}" -f $number.Substring(0,3), $number.Substring(3,3), $number.Substring(6)
}
# Normalize phone numbers
$phoneNumbers = $phoneNumbers.ForEach{ Normalize-PhoneNumber $_ }
$phoneNumbersNormalize-PhoneNumber işlevi, telefon numarasındaki sayısal olmayan tüm karakterleri kaldırır ve onu standart bir şekilde biçimlendirir. Bu işlevin ForEach yöntemiyle kullanılması, dizideki tüm telefon numaralarının tutarlı bir şekilde normalleştirilmesini sağlar.
Çıkış :
(123) 456-7890
(123) 456-7890
(123) 456-7890
(123) 456-7890Çözüm
PowerShell kullanarak bir dizideki birden çok dizeyi değiştirmek, -replace operatörü, Replace() yöntemi, hash tablosu veya özel işlevler gibi çeşitli yöntemlerle gerçekleştirilebilir.
Bu eğitimde, her yöntemi PowerShell'de bir dizideki birden çok dizenin nasıl değiştirileceği ile ilgili örneklerle açıkladım.


