Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Suchen- / Ersetzen mit Text Item Delimiters

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 17.07.2005 - 10:22    Titel: Suchen- / Ersetzen mit Text Item Delimiters Antworten mit Zitat

Hier eine ausführlichere Version von Suchen/Ersetzen mit AppleScript's text item delimiters.

Das Problem bei der Benutzung der text item delimiters besteht darin, dass wirklich alle Vorkommen des Suchtextes ersetzt werden. Leider aber auch, wenn der Suchtext nur ein Teil eines Wortes ist.

Um die Groß-/Kleinschreibung zu beachten, habe ich 'considering case' verwendet. Das allein grenzt die Treffer schon ein.

Beispiel der Problematik:

Suchwort: Bau
Ersatzwort: XXX

Aus Bau wird richtig XXX

aber

Baumeister wird zu XXXmeister
Bauer wird zu XXXer

Lösung: Zum Suchwort bzw. Ersatzwort werden jeweils ein Zeichen hinzugefügt, dass es als einzelnes Wort abgrenzt - Leerzeichen, Punkt usw.
Aus den Ausgangswerten wird jeweils eine Suchliste und eine Ersatzliste erstellt. Diese Liste wird in einer Schleife abgearbeitet. Es finden also mehrere Suchen-/Ersetzen-Vorgänge statt.

Code:

set Suche to "Bau"
set Ersatz to "XXX"

set SearchList to {Suche & " ", Suche & ".", Suche & ",", ¬
    Suche & ";", Suche & "!", Suche & "?"}
set ErsatZListe to {Ersatz & " ", Ersatz & ".", Ersatz & ",", ¬
    Ersatz & ";", Ersatz & "!", Ersatz & "?"}

set derText to "Es gibt viele Bauarbeiter, die nichts davon halten, literweise Bier in sich hinein zu schütten. In den Bau wandern will keiner.
Bauern haben auf dem Bau nichts zu suchen, schon eher beim Schachspiel. Eine Bauanleitung dazu benötigt man nicht.
Der Bauer ist so schlau und wandert in den Bau.
Baue nie auf Sand - das knirscht so laut.
Bau dir doch ein Schloss. Ich will mir ein Haus bauen. Darum bau ich mir kein Schloss.
"

repeat with i from 1 to count of SearchList
    set sW to item i of SearchList
    
set eW to item i of ErsatZListe
    
set derText to Ersetzen(derText, sW, eW)
end repeat

on Ersetzen(gesamterText, Suchwort, Ersatzwort)
    considering case
        set AppleScript's text item delimiters to Suchwort
        
set TextListe to text items of gesamterText
        
set AppleScript's text item delimiters to Ersatzwort
        
set derText to TextListe as text
        
set AppleScript's text item delimiters to ""
        
return derText
    end considering
end Ersetzen

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Jürgen Venne
•->
•->


Anmeldedatum: 19.08.2005
Beiträge: 14
Wohnort: 46519 Alpen-Veen

BeitragVerfasst am: 19.08.2005 - 07:53    Titel: Antworten mit Zitat

Hallo Snow,

Das klassische Applescript ist ja nicht schlecht, aber wer Platz sparen möchte und nur einen Einzeiler einsetzen möchte, der kann auch mit dem Unix-Tool "sed" arbeiten.
Das folgende Applescript erfüllt den gleichen Zweck, mit dem Unterschied, das alle von Unix als Whitespace und Interpunktionszeichen definierten Zeichen zum tauschen benutzt werden.


--#######################
set Suche to "Bau"
set Ersatz to "XXX"

set derText to "Es gibt viele Bauarbeiter, die nichts davon halten, literweise Bier in sich hinein zu schütten. In den Bau wandern will keiner. Bauern haben auf dem Bau nichts zu suchen, schon eher beim Schachspiel. Eine Bauanleitung dazu benötigt man nicht. Der Bauer ist so schlau und wandert in den Bau. Baue nie auf Sand - das knirscht so laut. Bau dir doch ein Schloss. Ich will mir ein Haus bauen. Darum bau ich mir kein Schloss. Bau, Bau. Bauteil: Bau; Bau?"

do shell script "echo \"" & derText & "\" | sed 's/" & Suche & "\\([[:space:][:punct:]]\\)/" & Ersatz & "\\1/g'"
--########################
_________________
Viele Grüße

Jürgen Venne
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter