Odstranění diakritiky

V rámci různých skriptů můžeme občas potřebovat odstranit z načtených textů českou diakritiku (např. chceme-li následně text poslat jako smsku). Ke změně určitého znaku v textu na jiný můžeme použít operátory -replace nebo -creplace. Operátor creplace rozlišuje malá a velká písmena a je pro nás tedy vhodnější.

$text = "Žluťočký kůň úpěl ďábelské ódy"
$text = $text -creplace("á","a")
$text = $text -creplace("ě","e")
$text = $text -creplace("é","e")
$text = $text -creplace("í","i")
$text = $text -creplace("ó","o")
$text = $text -creplace("ú","u")
$text = $text -creplace("ů","u")
$text = $text -creplace("č","c")
$text = $text -creplace("ý","y")
$text = $text -creplace("š","s")
$text = $text -creplace("ř","r")
$text = $text -creplace("ž","z")
$text = $text -creplace("ť","t")
$text = $text -creplace("ď","d")
$text = $text -creplace("ň","n")
$text = $text -creplace("Á","A")
$text = $text -creplace("Ě","E")
$text = $text -creplace("É","E")
$text = $text -creplace("Í","I")
$text = $text -creplace("Ó","O")
$text = $text -creplace("Ú","U")
$text = $text -creplace("Ů","U")
$text = $text -creplace("Č","C")
$text = $text -creplace("Ý","Y")
$text = $text -creplace("Š","S")
$text = $text -creplace("Ř","R")
$text = $text -creplace("Ž","Z")
$text = $text -creplace("Ť","T")
$text = $text -creplace("Ď","D")
$text = $text -creplace("Ň","N")

Výsledkem je “Zlutoucky kun upel dabelske ody”

V rámci skriptů můžeme však použít následující funkci:

Function Replace-Diacritics {
Param ([ref]$text)
$ds = ("á","a"),("ě","e"),("é","e"),("í","i"),("ó","o"),("ú","u"),("ů","u"),("č","c"),("ý","y"),("š","s"),("ř","r"),("ž","z"),("ť","t"),("ď","d"),("ň","n"),("Á","A"),("Ě","E"),("É","E"),("Í","I"),("Ó","O"),("Ú","U"),("Ů","U"),("Č","C"),("Ý","Y"),("Š","S"),("Ř","R"),("Ž","Z"),("Ť","T"),("Ď","D"),("Ň","N")

foreach ($d in $ds) {
$text.value = $text.value -creplace($d[0],$d[1])
}
}

Použití funkce je pak následující:

$text = "Žluťočký kůň úpěl ďábelské ódy"
Replace-Diacritics ([ref]$text)
Write-Host $text

Úpravou proměnné $ds můžeme měnit v textu i jiné speciální znaky, např.:

$ds = ("ë","oe"),("ü","ue"),("ß","ss")

Komentáře nejsou povoleny.