START > APPLESCRIPT > Praktische Handler > Textteile extrahieren

Textteile extrahieren

Mit diesem Applescript-Handler lassen sich Textteile (von … bis) extrahieren. So lassen sich z.B. Texte mit bestimmten Start- und End-Tags aus einem Text auslesen. Will man z.B. alle fetten Texte oder alle roten Texte aus einer HTML-Datei auslesen, so braucht man in dem Handler-Aufruf nur den zu durchsuchenden Text und die entspr. Start- und End-Tags übergeben. Oder man möchte vielleicht einfach den Text zwischen … und … auslesen. All das lässt sich hiermit realisieren. Heraus kommt eine Liste mit Strings:

 

-- TEXT INPUT:
set txt to "Die <u>unterstrichenen Passagen</u> dieses Textes sollen extrahiert werden. Also auch <u>dieser Text hier</u>."

-- VERWENDUNG (Aufruf des handlers):
getTextParts(txt, "<u>", "</u>")

-- ERGEBNIS (eine Liste mit strings):
-- {"<u>unterstrichen Passagen</u>", "<u>dieser Text hier</u>"}

-- :::::::::::::::::::::::::::::::::  hohabadu.de  :::::::::::::::::::::::::::::::::
on getTextParts(input, startstring, endstring)
   set oldDel to text item delimiters
   set text item delimiters to startstring
   set starting to text items of input
   set text item delimiters to endstring
   set output to {}
   repeat with part in starting
      try
         copy startstring & text item -2 of text items of part & endstring to the end of output
      end try
   end repeat
   set text item delimiters to oldDel
   return output
end getTextParts
 Im Scripteditor öffnen

Kommentar schreiben

Bernd |  17.08.2011, 12:54:24 |  92.76.94.127 = dslb-092-076-094-127.092.076.pools.vodafone-ip.de
Achtung ab sofort besser die Listenform {} verwenden. set {tid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, {""}} -- save and set to "" ----set AppleScript's text item delimiters to tid -- always restore them!-------AppleScript's text item delimiters: AppleScript includes a global property called "text item delimiters" that can be set in a script. The default value is {""}, i.e., scripts in which the text item delimiters are not specifically changed don't alter text in any way. (2009-05-29) Snow leopard: When getting the text items of a string, all the values in text item delimiters are considered. Previous versions only considered the first item in the list. [1186965]http://developer.apple.com/library/mac/#releasenotes/AppleScript/RN-AppleScript/RN-10_6/RN-10_6.htmlIn the discussion that follows, I have carefully referred to "AppleScript's text item delimiters" in the examples. As a matter of interest, for AppleScripts not involving a tell block, "text item delimiters" by itself will work in most scripts without the "AppleScript's" preface. Caution is required, however, when a tell block is involved because applications like TextEdit also use the AppleScript key words "text item delimiters" in their dictionaries, and instant confusion will result about whose text item delimiters are meant. Beginners should stick to the full version. Experienced scripters will know when to use the shortened form. 

MacArno |  14.03.2011, 18:37:09 |  84.191.178.148 = p54BFB294.dip0.t-ipconnect.de
Um die Wahl zu haben, ob man die start- und stop-Strings mit ausgegeben bekommen möchte, gibt es bei mir noch einen zusätzlichen Parameter für den Handler: getTextParts(input, startstring, endstring, delsBool) delsBool enthält true oder false und wird über eine if-Weiche abgefragt:try if delsBool is true then copy startstring & text item -2 of text items of part & endstring to the end of output else copy text item -2 of text items of part to the end of output end if end try 



Powered By CMSimple Design By NMuD Top