[GastForen Programmierung/Entwicklung AppleScript Suchen + ersetzen Ganzes Wort

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Suchen + ersetzen Ganzes Wort

Anonym
Beiträge gesamt: 22827

18. Feb 2005, 09:16
Beitrag # 1 von 5
Bewertung:
(1086 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
tell document 1 of application "QuarkXPress Passport™ 4.11"
 activate
 repeat with i from 1 to count of sList
  set s to item i of my sList
  set r to item i of my rList
  try
   tell every story
    set (every text where it is s) to r
   end tell
  end try
 end repeat
 display dialog "Fertich." buttons "OK" default button 1 with icon 1 giving up after 10000
end tell

Hiermit wird eine Suchen und Ersetzen-Liste abgearbeitet. (Danke nochmal an Hans)
Wie kann ich hier noch die Option "Ganzes Wort" einbauen, so wie man sie aus dem Quark-eigenen Werkzeug kennt?

Gruss
Christoph
X

Suchen + ersetzen Ganzes Wort

Hans Haesler
  
Beiträge gesamt: 5805

18. Feb 2005, 12:25
Beitrag # 2 von 5
Beitrag ID: #419335
Bewertung:
(1085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

das Script ist auf Geschwindigkeit ausgerichtet: Dank den beiden 'my' ist der Zugriff auf die Listen
schneller und dank 'every text' wird das Ersetzen praktisch auf einen Schlag vorgenommen.

Damit nur ganze Wörter ausgetauscht werden, könntest Du bei den Begriffen je hinten und vorne einen
Zwischenraum einfügen. Aber damit würden Worte, welche am Anfang eines Absatzes stehen oder von vor-
oder/und nachgestellten Satzzeichen umgeben sind, nicht erfasst.

Deshalb müsste man komplizierte Bedingungen einschieben – und schon klappt es mit 'every' nicht mehr.
Denn dann muss jeder gefundene Fall untersucht werden. Ich werde gelegentlich versuchen, eine
entsprechende Lösung zu finden. Ich melde mich wieder.

Übrigens: was bezweckst Du mit dem 'giving up after 10000'? Soll der Dialog 10000 Sekunden lang sichtbar
bleiben? Das Problem ist, dass wenn die Meldung länger als eine Minute angezeigt bleibt, nach dem Klick
auf "OK" eine Fehlermeldung erscheint. Es ist also besser, in diesem Fall auf das 'giving up' zu verzichten und
einen 'timeout'-Wickel einzubauen:
---
with timeout of 300 seconds
display dialog "Fertich." buttons "OK" default button 1 with icon 1
end timeout
---

Mein ursprüngliches 'giving up after 1' war benutzerfreundlich gedacht. Die Meldung erscheint, verschwindet
aber nach einer Sekunde wieder, ohne dass der Anwender auf den "OK"-Button klicken muss.

Gruss, Hans


als Antwort auf: [#419334]

Suchen + ersetzen Ganzes Wort

Anonym
Beiträge gesamt: 22827

18. Feb 2005, 12:41
Beitrag # 3 von 5
Beitrag ID: #419336
Bewertung:
(1085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
nun ich dachte es wäre lediglich ein Schalter für die Funktion "Ganzes Wort".
Ich habe festgestellt, dass es doch sehr gefährlich sein kann, sehr viele
Begriffe zu suchen und ersetzen.
Es gibt Situationen wo sich das Script selber ein Bein stellt. D.h. ein kurzer
String ist bereits am Anfang der Stapelverarbeitung ersetzt worden.
Bei der Weiterführung des Stapels fehlt dann dieser kleine Teil in einem anderen und längeren Suchstring.

Ich habe über 400 Ersetzungen und da wird es dann unübersichtlich.
Die Umsetzung "Ganzes Wort" ist nicht so dringlich.

Zum Dialog:
Das hatte ich mir irgendwo blind wegkopiert und war froh das es funktioniert ohne mir Gedanken zu machen, was dieser Teil überhaupt macht.

Gruss Christoph


als Antwort auf: [#419334]

Suchen + ersetzen Ganzes Wort

Hans Haesler
  
Beiträge gesamt: 5805

18. Feb 2005, 13:50
Beitrag # 4 von 5
Beitrag ID: #419337
Bewertung:
(1085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

also wenn das Ersetzen-Problem "nur" ein Konflikt von gleichen Wortteilen ist, dann musst Du "nur" die Listen
intelligent aufstellen: Die langen Begriffe zuerst und die kurzen am Schluss.

Ein Beispiel: "Chris" soll durch "Hans" ersetzt werden und "Christoph" durch "Hanspeter". Wenn der erste Lauf
mit "Chris"/"Hans" durchgeführt würde, dann würde "Christoph" verstümmelt. Wenn aber mit "Christoph" begonnnen
wird, dann wird dieser zu "Hanspeter" und der "Chris" kann durch "Hans" ersetzt werden.

Gruss, Hans


als Antwort auf: [#419334]

Suchen + ersetzen Ganzes Wort

Hans Haesler
  
Beiträge gesamt: 5805

18. Feb 2005, 20:01
Beitrag # 5 von 5
Beitrag ID: #419338
Bewertung:
(1085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ich habe vergessen, etwas zu erwähnen. Und zuhanden aufmerksamer Forumsteilnehmer hole ich es nach.

Natürlich könnte man die "Wort"-Funktion ganz einfach einschalten, indem man statt 'every text' den Ausdruck
'every word' gebraucht. Klappt sehr gut (abgesehen von der Nichtbeachtung der Gross- und Kleinschreibung ...).
Bedingung ist aber, dass die Suchstrings ausschliesslich ganze Worte sind.  Ein einziger "Fremdkörper" – wie
z.B. ein Bindestrich (oder ein Zwischenraum) – genügt, dass das Wort nicht mehr gefunden wird.

Und weil ich von einem privaten Austausch im Dezember weiss, dass Deine Strings wesentlich komplexer sind,
habe ich diese Möglichkeit gar nicht erst vorgeschlagen.

Ich werde also versuchen, ein aufwendiges Verfahren zu entwickeln, mit welchem ein gezielteres Ersetzen
möglich sein wird. Ich habe zwei Ideen dafür und hoffe, dass es mit einer davon klappen wird.

Gruss, Hans


als Antwort auf: [#419334]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
12.03.2021 - 16.07.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 12. März 2021, 13.00 Uhr - Freitag, 16. Juli 2021, 17.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von publishingNETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: CHF 6'300.-
Dauer: 18 Tage (ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PBAS