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

Anzahl gefundener Textstellen

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
flair
•-->
•-->


Anmeldedatum: 08.04.2007
Beiträge: 20
Wohnort: Hannover

BeitragVerfasst am: 14.07.2007 - 01:42    Titel: Anzahl gefundener Textstellen Antworten mit Zitat

Hallo,

ich möchte ermitteln wie oft sich eine Zeichekette in einem Text befindet. Bisher sieht mein erfolgloser Versuch so aus:

Code:
set derText to "TestxxTestxx"
set finden to "xx"

set Anzahl to (count (find text finden in derText))


Was auch immer ich damit abgefragt hab, es ergibt immer 3.
Vielleicht hat jemand eine Idee?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 14.07.2007 - 07:41    Titel: Antworten mit Zitat

Embarassed zufällig kämpfe ich mit demselben Problem, dein Skript:

set derText to "TestxxTestxx"
set finden to "xx"

set Anzahl to (count (find text finden in derText))
----------------------------------------------
--du hast Anzahl items von (find text finden in derText) errechnet:
-->(=3 Positionen):
set findErgebnis to (find text finden in derText)
--return findErgebnis -->{matchPos:4, matchLen:2, matchResult:"xx"}
--return matchResult of findErgebnis -->"xx" <--(=3.Position)

--oder so gezeigt:
set findErgebnisLIST to (find text finden in derText) as list
return findErgebnisLIST --{4, 2, "xx"} -->3 Listen-items

ich habe deshalb versucht, deinen "TestxxTestxx" mit dem
[set AppleScript's text item delimiters to "xx"] aufzuschlüsseln und bin dabei kläglich gescheitert. Aber vielleicht kommst du selbst drauf.
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 14.07.2007 - 07:57    Titel: Antworten mit Zitat

Zitat:
set derText to "TestxxTestxx"
set finden to "xx"

set {oastid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, finden}
set Anzahl to (count text items of derText) - 1
set AppleScript's text item delimiters to oastid
return Anzahl

_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 14.07.2007 - 09:10    Titel: Antworten mit Zitat

Applaus Skeeves Technik für Delimiter {oastid, AppleScript's ........ eröffnet Welten! endlich kapiere ich damit ZB Snows "Quicksort"-Skript

Dank Skeeve kann ich nun zeigen, was ein "Halbbatzig-Wisser" (ich) so alles falsch machen kann, vielleicht hilft die Darstellung des Fehlers auch jemandem:
set derText to "TestxxTestxx"
set finden to "xx"

set AppleScript's text item delimiters to "" --<--Apples Standard
set derTextLIST to every text item of derText
-->{"T", "e", "s", "t", "x", "x", "T", "e", "s", "t", "x", "x"}
set AppleScript's text item delimiters to "xx"
set derTextLIST to every item of derText --<--hier lag der Fehler
-->{"T", "e", "s", "t", "x", "x", "T", "e", "s", "t", "x", "x"}.
set derTextLIST to every text item of derText --<-so ist es richtig
-->{"Test", "Test", ""}
set AppleScript's text item delimiters to "" --<-nicht vergessen!

Frage: welche Überlegung steckt hinter
Skeeve hat Folgendes geschrieben:
- 1
Kann in jedem Fall mit einem einzigen leeren Schluss-item(oder einem einzigen Resttext) wies in {"Test", "Test", ""} zutrifft, gerechnet werden?
ich bereue meine Frage schon wieder, da gibts nämlich wirklich nichts zu meckern
wunderbar, Skeeves Lösung hält allen Versuchungen stand:
hat Folgendes geschrieben:
set derText to "TestxxTestxxxx" --<--
set finden to "xx"

set {oastid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, finden}
----------
set textItems to every text item of derText as list --<--
{"Test", "Test", "", ""}
----------
set Anzahl to (count text items of derText) - 1
set AppleScript's text item delimiters to oastid
return Anzahl

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
flair
•-->
•-->


Anmeldedatum: 08.04.2007
Beiträge: 20
Wohnort: Hannover

BeitragVerfasst am: 14.07.2007 - 10:45    Titel: Antworten mit Zitat

Vielen Dank!
ich möchte damit Textketten austauschen und hatte ein riesen Scriptmonster dafür in Arbeit und dachte ich könnte es ein wenig vereinfachen. Diese Lösungen sind natürlich viel eleganter. Jetzt sieht mein Script so aus:

Code:
set derText to "TestxxTestxxTestxxxx"
set finden to "xx"
set ersetzen to "yy"
set NeuerText to ""

set AppleScript's text item delimiters to finden

set derTextLIST to every text item of derText
set AppleScript's text item delimiters to ""

repeat with z from 1 to (count items of derTextLIST) - 1
   set NeuerText to NeuerText & (item z of derTextLIST) & ersetzen
end repeat
set NeuerText to NeuerText & (item (z + 1) of derTextLIST)
get NeuerText
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 14.07.2007 - 12:25    Titel: Antworten mit Zitat

Sieht gut aus, deine Lösung mit delimiters.
Solltest du, wie ich, eine Schwäche zeigen dafür, noch irgendetwas zusätzliches ersetzen lassen zu wollen oder gleich fürs nächste "SUCHE/ERSETZEN"-Skript etwas einfach zu adaptierendes und blitzschnelles bereitzuhalten, hätte ich noch einen Lösungs-Vorschlag für deine neue Aufgabenstellung:

1) er meidet den "Hautkontakt" mit dem delimiters.
-->(Allerdings kannte ich Skeeves genialen Trick noch nicht! der macht nämlich den Umgang mit dem delimiters "genüsslicher" nebst der Tatsache, dass ich dank Skeeves Delimiters-Technik:{VARIABLE, "konkret"} <->{"konkret",VARIABLE} endlich den unten zitierten Original-Snow-SUCHEN/ERSETZEN-handler, den der maestro himself in der OSX-Snippet-Sammlung gepostet hat, verstanden habe:
HIER ! Snow Verfasst am: 28.04.2003 - 16:33    Titel: Programm: AppleScript - Funktion: suchen/ersetzen
)
2) ist ganz einfach erweiterbar (ich versuchs mit Beispiel "TEST" zu zeigen)


Versuch einer universalen Ersetzer-Funktion für deine neue Aufgabenstellung
hat Folgendes geschrieben:
set derText to "TestxxTestxxTestxxxx"
set finden to "xx"
set ersetzen to "yy"
set NeuerText to ""

-------------------------------------------------------------
set
ZuErsetzenText to derText as text
set
SuchTErsatzTLISTE to
   {
SuchT:finden, ErsatzT:ersetzen}, ¬
   {
SuchT:"Test", ErsatzT:"TEST"} ¬
      } --
<--diese Liste ist mit Zeilenduplikaten leicht erweiterbar
set
NeuerText to my SuchErsetzER(ZuErsetzenText, SuchTErsatzTLISTE)
-------------------------------------------------------------

get
derText & "-->" & NeuerText



--
############## UNIVERSAL_Handler-Paket ##############
on
SuchErsetzER(ZuErsetzenText, SuchTErsatzTLISTE)
   
set LangSuchTErsatzTLISTE to count SuchTErsatzTLISTE
   --
   
repeat with ItemNr from 1 to LangSuchTErsatzTLISTE
      
set AktErsatzPaar to item ItemNr of SuchTErsatzTLISTE
      
set SuchT to SuchT of AktErsatzPaar
      
set ErsatzT to ErsatzT of AktErsatzPaar
      --
SNOWS Original-handler Aufruf:
      
set ZuErsetzenText to ¬
         
my textReplace(ZuErsetzenText, SuchT, ErsatzT)
   
end repeat
end
SuchErsetzER

--
SNOWS Original-handler:
on
textReplace(theText, srchStrng, replStrng)
   
tell (a reference to AppleScript's text item delimiters)
      
set {od, contents} to {contents, {srchStrng}}
      
try
         
set {textList, contents} to {(text items of theText), {replStrng}}
         
set {newText, contents} to {(textList as text), od}
         
return item 1 of result
      
on error errMsg number errNbr
         
set contents to od
         
error errMsg number errNbr
      
end try
   
end tell
end
textReplace
--
#############ENDE UNIVERSAL_Handler-Paket ############

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 14.07.2007 - 13:52    Titel: Antworten mit Zitat

flair hat Folgendes geschrieben:
Diese Lösungen sind natürlich viel eleganter.
Achwas. Das hier ist noch eleganter:
Zitat:
set derText to "TextxxTextxx"
set finden to "xx"
set ersetzen to "yy"

set {oastid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, finden}
set stellen to text items of derText
set AppleScript's text item delimiters to ersetzen
set NeuerText to stellen as text
set AppleScript's text item delimiters to oastid
return NeuerText

_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 18.07.2007 - 13:10    Titel: Antworten mit Zitat

Skeeve hat Folgendes geschrieben:
Das hier ist noch eleganter
ohne jeden Zweifel!
aber wie elegant wird es, wenn man mehrere SUCH/ERSTZ-PAARE durchlaufen lassen will?(meine intensivsten Gebete, dass flair danach frägt, blieben unerhört, deshalb Wagnis eines Einwandes)
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 18.07.2007 - 14:30    Titel: Antworten mit Zitat

spirigwi hat Folgendes geschrieben:
wenn man mehrere SUCH/ERSTZ-PAARE durchlaufen lassen will?
hängt es davon ab, wie die suchpaare aufgebaut sind. Generell würde ich sagen, daß ich, bis auf Spezialfälle, hier nicht auf AppleScript bauen würde.

Was die Spezialfälle angeht, verweise ich auf mein sprintf Posting. Naja.. Ich erwähne es nur. Finden mußt Du selbst. Wink
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X 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