Benutzer:Robot Monk/ReplaceRegEx.ahk

/*
Installiere AutoHotkey

Speichere das Skript unter ReplaceRegEx.ahk im Verzeichnis mit den ADB-Dateien. Sie müssen die Endung .txt haben (kann aber angepasst werden)

Füre das Skript aus (Doppelklick), trage ein, was gesucht und durch was ersetzt werden soll. Achtung!! Alle .txt-Dateien im Verzeichnis, wo das Skript liegt, werden bearbeitet und ersetzt! Deshalb mache zuerst ein Backup im anderen Verzeichnis

Beispiele sind unten in dieser Datei.
*/

IniRead, findText, optionen.ini, Global, findText, %A_Space%
IniRead, replaceText, optionen.ini, Global, replaceText,  %A_Space%
Gui, Add, Text,, Suchen nach (RegEx):
Gui, Add, Text,, Ersetzen durch:
Gui, Add, Edit, vFind ym w200, %findText%
Gui, Add, Edit, vReplace w200, %replaceText%
Gui, Add, Button, default, OK  ; The label ButtonOK (if it exists) will be run when the button is pressed.
Gui, Add, Button, , Cancel
Gui, Show,, Ersetzen...
return  ; 


ButtonOK:
	Gui, Submit  ; Save the input from the user to each control's associated variable.
	
	IniWrite, % find, optionen.ini, Global, findText
	IniWrite, % replace, optionen.ini, Global, replaceText
	
	;Gui-Form verwandelt Spezialzeichen in lesbare Zeichen. Hier werden sie zurück verwandelt:
	StringReplace, replace, replace, ``r, `r, All
	StringReplace, replace, replace, ``n, `n, All
	StringReplace, replace, replace, ``t, `t, All
	StringReplace, replace, replace, \r, `r, All
	StringReplace, replace, replace, \n, `n, All
	StringReplace, replace, replace, \t, `t, All
	
	Loop, %A_ScriptDir%\*.txt
	{
		FileRead, content, %A_LoopFileFullPath%
		content:=RegExReplace(content, find, replace, countPart)
		if ErrorLevel
		{
			MsgBox, Ein Fehler ist aufgetreten. Fehlermeldung: %ErrorLevel% `n Das Programm wird beendet
			ExitApp
		}
		count+=countPart
		if (countPart>0)
		{
			FileDelete, %A_LoopFileFullPath%
			FileAppend, %content%, %A_LoopFileFullPath%
		}
	}
	MsgBox, %count% Treffer wurden ersetzt
	ExitApp
return

ButtonCancel:
	ExitApp
return

/*
Beispiele:

Zeile nach }} entfernen:
"}}\r\n.*?\r\n"  durch "}}\r\n"

Leerzeichen am Zeilenanfang entfernen:
"m)^ +" durch ""	; 

Trennzeichen und Leerzeichen am Zeilenende entfernen:
"([a-zäöüß])[- ] ?\r\n([a-zäöüß])" durch "$1$2"

Sonstige einmalige Leerzeilen durch Leerzeichen ersetzen: (lieber am Ende der ganzen Arbeit)
"([^\n}])\r\n([^\r])" durch "$1 $2"

Formatirung der Namen:
"m)^(([A-ZÄÖÜ])\S+:) ([A-ZÄÖÜ].*?) (\2\.,)" durch "\r\n'''$1''' ''$3'' $4"
*/