Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Hromadná záměna znaků v souborech

Mám několik txt_like souborů s texty v češtině, asi deset kousků. Pro potřeby vydání překladu potřebuji některé znaky s diakritikou změnit, aby následně odpovídaly překresleným fontům. Například, aby v české verzi bylo správně zobrazeno "ě", musím mít v textu "ê". Tech požadovaných transformací je docela dost,

Ě => Ê
Ů => Û
Č => Ç
Ď => Ð
Ň => Ñ
Ř => Ò
Š => Ø
Ť => Î
Ž => È
ě => ê
ů => û
č => ç
ď => ð
ň => ñ
ř => ò
š => ø
ť => î
ž => è

Dokážu tohle dělat po jednom písmenku (najít a nahradit), třeba Notepad++. Tam by mělo fungovat tohle nahrazení, pokud bych v něm otevřel více souborů najednou. Změním tím jedno písmenko ve všech otevřených souborech.

Je nějaká možnost, jak provést náhradu více písmenek v souboru v jednom kroku? Někam do programu nahrát "mustr", co změnit na co? V Notepad++ jsem to nenašel. Nebráním se samozřejmě použití jiného editoru. Pochopitelně, v souborech se nesmí měnit nic jiného, žádné taby, entery, formátování, délka.

Díky za případný tip.

Řešení:

To neumíš programovat nebo skriptovat? Příklad pro autoit:

Local $aArray [18][2] = [["Ě", "Ê"],["Ů", "Û"],["Č", "Ç"],["Ď", "Ð"],["Ň", "Ñ"],["Ř", "Ò"],["Š", "Ø"],["Ť", "Î"], _
["Ž", "È"],["ě", "ê"],["ů", "û"],["č", "ç"],["ď", "ð"],["ň", "ñ"],["ř", "ò"],["š", "ø"],["ť", "î"],["ž", "è"]]
Local $hSearch = FileFindFirstFile("in\*.*")
If $hSearch = -1 Then Exit
Local $sFileName = "", $iResult = 0
While 1
	$sFileName = FileFindNextFile($hSearch)
	If @error Then ExitLoop
	$hFileOpen = FileOpen("in\" & $sFileName)
	$sString = FileRead($hFileOpen)
	FileClose($hFileOpen)
	For $i = 0 To UBound($aArray) - 1
		$sString = StringReplace($sString, $aArray[$i][0], $aArray[$i][1],0,1)
	Next
	$hFileOpen = FileOpen("out\" & $sFileName,2)
	FileWrite($hFileOpen,$sString)
	FileClose($hFileOpen)
WEnd
FileClose($hSearch)

Toto ti projede všechny soubory ve složce in, nahradí všechny znaky a ty soubory uloží upravené ve složce out.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
To neumíš programovat nebo skriptovat? Příklad pro autoit: Local $aArray [18][2] = [["Ě", "Ê"],["Ů"…
kacikac 03.04.2020 14:40
kacikac
Programovat neumím. Jsem rád, že (s pomocí) zvládnu složitější makra v Excelu. Každopádně díky, fun… poslední
L-Core 03.04.2020 16:56
L-Core

To neumíš programovat nebo skriptovat? Příklad pro autoit:

Local $aArray [18][2] = [["Ě", "Ê"],["Ů", "Û"],["Č", "Ç"],["Ď", "Ð"],["Ň", "Ñ"],["Ř", "Ò"],["Š", "Ø"],["Ť", "Î"], _
["Ž", "È"],["ě", "ê"],["ů", "û"],["č", "ç"],["ď", "ð"],["ň", "ñ"],["ř", "ò"],["š", "ø"],["ť", "î"],["ž", "è"]]
Local $hSearch = FileFindFirstFile("in\*.*")
If $hSearch = -1 Then Exit
Local $sFileName = "", $iResult = 0
While 1
	$sFileName = FileFindNextFile($hSearch)
	If @error Then ExitLoop
	$hFileOpen = FileOpen("in\" & $sFileName)
	$sString = FileRead($hFileOpen)
	FileClose($hFileOpen)
	For $i = 0 To UBound($aArray) - 1
		$sString = StringReplace($sString, $aArray[$i][0], $aArray[$i][1],0,1)
	Next
	$hFileOpen = FileOpen("out\" & $sFileName,2)
	FileWrite($hFileOpen,$sString)
	FileClose($hFileOpen)
WEnd
FileClose($hSearch)

Toto ti projede všechny soubory ve složce in, nahradí všechny znaky a ty soubory uloží upravené ve složce out.

Zpět do poradny Odpovědět na původní otázku Nahoru