PowerShell'de Bir Dizedeki Birden Çok Karakter Nasıl Değiştirilir?
PowerShell'de dizelerle çalışırken verilerinizi temizlemek veya değiştirmek için birden fazla karakteri veya alt dizeyi değiştirme gereksinimi duydum. Bu derste size PowerShell kullanarak çeşitli yöntemler kullanarak bir dizedeki birden fazla karakteri nasıl değiştireceğinizi örneklerle göstereceğim.
PowerShell'de bir dizedeki birden çok karakteri değiştirmek için, desen tabanlı değiştirmeler için -replace operatörünü, doğrudan değiştirmeler için String.Replace() yöntemini veya birden çok değiştirmeyi verimli bir şekilde yönetmek için karma tablosunu kullanabilirsiniz. Örneğin, -replace operatörünü kullanarak eyalet kısaltmalarını tam adlarla değiştirebilirsiniz: $string=$string -replace “NY”, “New York”.
1. -replace Operatörünü Kullanmak
-replace operatörü, PowerShell'de normal ifadeler kullanarak metni değiştirmenize olanak tanıyan kullanışlıdır. Bu yöntem özellikle sabit dizeler yerine kalıpları değiştirmeniz gerektiğinde kullanışlıdır.
Size bir örnek göstereyim.
Durum kısaltmalarını içeren bir dizeniz olduğunu ve bunları tam adlarıyla değiştirmek istediğinizi varsayalım. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:
# Original string with state abbreviations
$string = "NY, CA, TX, FL"
# Replace abbreviations with full names
$string = $string -replace "NY", "New York"
$string = $string -replace "CA", "California"
$string = $string -replace "TX", "Texas"
$string = $string -replace "FL", "Florida"
# Output the modified string
Write-Output $string
Çıkış:
New York, California, Texas, FloridaYukarıdaki betiği VS kodunu kullanarak çalıştırdıktan sonra tam çıktı için aşağıdaki ekran görüntüsüne de göz atabilirsiniz.
PowerShell'de Dizeleri Yeni Satırla Birleştir'i kontrol edin
2. String.Replace() Yöntemini Kullanmak
String.Replace() yöntemi, PowerShell'deki karakterleri veya alt dizeleri değiştirmenin başka bir yoludur. Bu yöntem büyük/küçük harfe duyarlıdır ve belirtilen bir alt dizenin tüm oluşumlarını değiştirir.
Size String.Replace() yönteminin nasıl kullanılacağına dair bir örnek göstereyim.
Şehir adlarını içeren bir diziniz olduğunu ve bunları farklı adlarla değiştirmek istediğinizi varsayalım:
# Original string with city names
$string = "Los Angeles, New York, Chicago, Houston"
# Replace city names
$string = $string.Replace("Los Angeles", "LA")
$string = $string.Replace("New York", "NYC")
$string = $string.Replace("Chicago", "Chi-Town")
$string = $string.Replace("Houston", "H-Town")
# Output the modified string
Write-Output $stringÇıkış:
LA, NYC, Chi-Town, H-TownAyrıca çıktı için aşağıdaki ekran görüntüsüne de göz atabilirsiniz.
3. Çoklu Değiştirmeler için Hashtable Kullanmak
PowerShell'de bir dizedeki birden çok karakteri veya alt dizeyi değiştirmeniz gerektiğinde, karma tablosu kullanmak süreci basitleştirebilir. Bu yöntem, tüm değiştirmeleri tek bir yapıda tanımlamanıza ve bunları yinelemeli olarak uygulamanıza olanak tanır.
Aşağıdaki örneği kontrol edebilirsiniz:
Bir dizedeki çeşitli kısaltmaları tam biçimleriyle değiştirmeniz gereken bir senaryo düşünün:
# Original string with abbreviations
$string = "The GDP of USA is higher than that of UK and EU."
# Hashtable with replacements
$replacements = @{
"USA" = "United States of America"
"UK" = "United Kingdom"
"EU" = "European Union"
}
# Apply replacements
foreach ($key in $replacements.Keys) {
$string = $string.Replace($key, $replacements[$key])
}
# Output the modified string
Write-Output $stringÇıkış:
The GDP of United States of America is higher than that of United Kingdom and European Union.PowerShell'de Birleştirilmiş Dize ve Değişkeni Okuyun
4. Select-String'i Normal İfadelerle Kullanmak
PowerShell'de bir dizedeki birden çok karakteri değiştirmek için Select-String cmdlet'ini normal ifadelerle birleştirilmiş olarak da kullanabilirsiniz.
İşte bir örnek.
Çeşitli formatlarda tarihler içeren bir dizeniz olduğunu ve bunları AA/GG/YYYY olarak standartlaştırmak istediğinizi varsayalım:
# Original string with dates
$string = "Today is 2024-07-28, and the meeting is on 28/07/2024."
# Regular expression pattern for different date formats
$pattern = "\b(\d{4})-(\d{2})-(\d{2})\b|\b(\d{2})/(\d{2})/(\d{4})\b"
# Replace dates with standardized format
$string = [regex]::Replace($string, $pattern, {
if ($args[0] -match "(\d{4})-(\d{2})-(\d{2})") {
"{0}/{1}/{2}" -f $matches[2], $matches[3], $matches[1]
} elseif ($args[0] -match "(\d{2})/(\d{2})/(\d{4})") {
"{0}/{1}/{2}" -f $matches[1], $matches[2], $matches[3]
}
})
# Output the modified string
Write-Output $stringÇıkış :
Today is 07/28/2024, and the meeting is on 07/28/2024.Yukarıdaki betiği VS kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz.
Çözüm
Bu eğitimde, farklı yöntemler kullanarak PowerShell'de bir dizedeki birden çok karakterin nasıl değiştirileceğini açıkladım. Bunun için -replace Operatörünü kullanmanızı öneririm.


