Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

valivarius
Beiträge: 1
Registriert: Sa, 27.11.2021 01:26

Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von valivarius »

Hallo,

ich habe eben erst mit dem Schreiben von Macros im Writer von LibreOffice angefangen und kann sein, dass es sich um etwas sehr Banales handelt. Mein Ziel ist es, dieses Zeichen " bzw. chr(34) durch zwei Typen von Anführungszeichen zu ersetzen und zwar je nach Kontext. Ich denke, die erste Regel ist einfach:
Wenn auf " ein Großbuchstabe folgt, dann ersetze durch „
Bei dem anderen wird es etwas schwieriger.
Wenn nach einem Kleinbuchstaben, einem Punkt, einem Ausrufezeichen oder einem Fragezeichen (ggf. auch nach einem Gedankenstrich) " kommt, dann ersetze durch “
Nun kann man das offensichtlich so nicht ins Makro reinschreiben und ich tue mir schwer, das zu formalisieren.
Aus einem Forum hatte ich so etwas ausgegraben:
dim myDoc as object, mySuche as Object
'oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
myDoc = thisComponent

' Doppelte Leerzeichen:
mySuche=myDoc.createReplaceDescriptor()
With mySuche
.SearchRegularExpression = True
.setSearchString( " ")
.setReplaceString(" ")
end With
myDoc.replaceAll(mySuche)

End Sub
Dieser Code hat hervorragend beim Ersetzen von einzelnen Zeichen in andere Zeichen funktioniert, generell war er gut, solange man sie mit "" anführen konnte. Aber da es genau um diese Zeichen geht, musste ich auf sie verzichten und hab's dann irgendwie mit & versucht, was nicht geklappt hat.
mySuche=myDoc.createReplaceDescriptor()
With mySuche
.SearchRegularExpression = True
.setSearchString( chr(34)&[:upper:] or [:lower:]&chr(34))
.setReplaceString("„"&[:upper:] or [:lower:]&"“")
end With
myDoc.replaceAll(mySuche)
Solche Geschichten...

Wie gesagt: Ich bin ein blutiger Anfänger. Ich wäre super dankbar, wenn mir jemand einen Tipp geben kann.

Danke und viele Grüße
valivarius
Mondblatt24
*******
Beiträge: 1129
Registriert: So, 14.05.2017 16:11

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von Mondblatt24 »

valivarius hat geschrieben: Sa, 27.11.2021 01:37 Ich wäre super dankbar, wenn mir jemand einen Tipp geben kann.
Makro, wieso?

Das kannst Du doch festlegen über Extras → AutoKorrektur → AutoKorrektur-Optionen → Register: Gebietsschemaabhängige Optionen?



Screenshot_ 2021-11-27 08 52 08.png
Screenshot_ 2021-11-27 08 52 08.png (68.37 KiB) 5325 mal betrachtet


Gruß
Peter
Win 11 (x64) ▪ 24.2.1.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
Benutzeravatar
miesepeter
********
Beiträge: 2095
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von miesepeter »

@valivarius
Gelegentlich kopiere ich aus dem Internet Texte, die genau dieses Problem enthalten (ausschließlich obere Anführungszeichen). Würdest du ein Makro dazu entwickeln und veröffentlichen, wäre das für mich hilfreich. - Ciao und viel Erfolg
Karolus
********
Beiträge: 7432
Registriert: Mo, 02.01.2006 19:48

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von Karolus »

miesepeter hat geschrieben: Sa, 27.11.2021 12:57 @valivarius
Gelegentlich kopiere ich aus dem Internet Texte, die genau dieses Problem enthalten (ausschließlich obere Anführungszeichen). Würdest du ein Makro dazu entwickeln und veröffentlichen, wäre das für mich hilfreich. - Ciao und viel Erfolg
Hier isses, das →→(")([^"]+)(") ←←gehört ins Suchfeld.
das →→„$2“ ←←gehört ins Ersetzen-feld,
mit der Option [x]regulärer Ausdruck, und ggf. [x]nur in Selektion
wenn du meinst das zu brauchen kannst dir das als Makro aufzeichnen, andererseits kannst du auch einfach →Extras→Autokorrektur→Anwenden ***mit den entsprechenden Einstellungen unter …→Autokorrektur-optionen
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
miesepeter
********
Beiträge: 2095
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von miesepeter »

Karolus hat geschrieben: Sa, 27.11.2021 14:02 →→(")([^"]+)(") ←←gehört ins Suchfeld.
das →→„$2“ ←←gehört ins Ersetzen-feld,
mit der Option [x]regulärer Ausdruck
Moin Karolus,
das ersetzt halt nur die Anführungszeichen. So wie ich den TE (und mich) verstehe, möchten wir die Anführungszeichen mit einer unteren Anführung, die Abführungszeichen mit einem oberen ersetzen.
Wollte ich z.B. das (führende) Anführungszeichen finden, so müsste ich in etwa suchen:

Code: Alles auswählen

^"|\s"
Das Problem könnte sich beim Abführungszeichen ergeben, das ja von Leerzeichen, Satzzeichen oder keinem Zeichen gefolgt wird. Da wäre die Suche evtl. so...

Code: Alles auswählen

"\s|"\.|"\?|"!|",
Und wie ersetze ich das dann?
Mein Testtext:

Code: Alles auswählen

"Das ist mein Testtext mit Anführungszeichen!" - "Ich habe", schrieb Karolus, "noch eine Menge Pfeile im Köcher!". Ich: "Wirst du sie auch treffsicher abschießen?"
- Ciao

EDIT - siehe @Stephans Antwort!
Zuletzt geändert von miesepeter am So, 28.11.2021 09:44, insgesamt 1-mal geändert.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von Stephan »

das ersetzt halt nur die Anführungszeichen.
Bei mir funktioniert der von Karolus vorgeschlagene Weg einwandfrei.

Kann es sein Du meinst: "das entfernt halt nur die Anführungszeichen.", weil Du fälschlich zum Ersetzen benutzt:

$2

statt:

„$2“

Und wie ersetze ich das dann?
Mein Testtext: [...]
ich habe mit diesem Text getestet und erhalte als Ergebnis:

„Das ist mein Testtext mit Anführungszeichen!“ - „Ich habe“, schrieb Karolus, „noch eine Menge Pfeile im Köcher!“. Ich: „Wirst du sie auch treffsicher abschießen?“


Gruß
Stephan
Benutzeravatar
miesepeter
********
Beiträge: 2095
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von miesepeter »

Stephan hat geschrieben: So, 28.11.2021 09:34weil Du fälschlich zum Ersetzen benutzt:

$2

statt:

„$2“
Oh, peinlich, du hast recht. Ich war so automatisch vom Platzhalter für Klammern ausgegangen, dass mir das gar nicht auffiel... :oops:
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von Hiker »

Der eigentliche Unterschied von Karolus Ansatz zur Frage ist das paarweise Ersetzen, womit die Suche nach dem Kontext entfällt. Wenn irgendwo ein paar Anführungsstriche fehlen gerät die Zählung eventuell aus dem Takt.

Für die Nachfrage

Code: Alles auswählen

"\s|"\.|"\?|"!|",
müsste man also statt dessen nach

Code: Alles auswählen

"(\s|\.|\?|!|,)
suchen und entsprechend mit “$1 ersetzen.
Nachteil hier ist die Möglichkeit nicht alle Folgezeichen zu erwischen - aber man kann hinterher natürlich alle verbliebenen " via Suche kontrollieren.

Mfg Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Karolus
********
Beiträge: 7432
Registriert: Mo, 02.01.2006 19:48

Re: Hochgestellte Anführungszeichen an Satzanfang und -ende per Macro ersetzen

Beitrag von Karolus »

Wenn irgendwo ein paar Anführungsstriche fehlen gerät die Zählung eventuell aus dem Takt.
Ich hatte nichts gegenteiliges behauptet, und zuätzlich nochmal auf: →Extras→Autokorrektur→Anwenden hingewiesen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten