Vorlage Dokumentationchange()
Allgemeines
   Aufruf
   Einleitung
   Installation
   Konfiguration
   Syntax
Einführung
   MetabefehlsAusdruecke
   MetabefehlsSyntax
   RegulaereAusdruecke
   VordefinierteVariablen
Funktionen
   abs()
   after()
   and()
   antoi()
   before()
   ceil()
   change()
   close()
   crop()
   equals()
   exp()
   flatten()
   float()
   floor()
   int()
   isnothing()
   itoan()
   length()
   log()
   log10()
   match()
   not()
   open()
   or()
   random()
   read()
   readline()
   sign()
   status()
   statustext()
   substr()
   system()
   time()
   tolower()
   toupper()
   typeof()
   write()
   writeline()
   xname()
   xor()
Metabefehle
   #after
   #array
   #break
   #call
   #config
   #const
   #debug
   #default
   #dict
   #else
   #every
   #forever
   #func
   #if
   #ifregion
   #ifunit
   #include
   #input
   #message
   #next
   #notrace
   #proc
   #return
   #sort
   #table
   #tag
   #trace
   #var
   #while
Rückruf-Prozeduren
   CalcUnitCapacities
   CreateRegionHeader
   CreateUnitHeader
   EndRegion
   EndUnit
   OnBuilding
   OnExit
   OnInit
   OnRegion
   OnShip
   OnUnit
   OutputLineFilter
Report-Objekte
   building
   grenze
   partei
   preise
   races
   region
   report
   ship
   things
   unit
Anhang
   Danksagungen
   SkriptDebugger
   VorlageFAQ

change()

Muster in Text ersetzen

Syntax

<str>=change(<txt>,<rexp>,<repl>)

Beschreibung

Die Funktion gibt eine Kopie von txt zurück, in der alle Vorkommen von rexp durch repl ersetzt wurden.

Durch die Funktion wird dann jedes Auftreten von dem, durch das mit einem regulären Ausdruck beschriebene Muster rexp, in dem Text txt ersetzt durch den neuen Text in repl. Das mittlere ist also ein Suchmuster und nicht einfach ein Suchtext. Vorlage verwendet dabei die Syntax die auch Perl für reguläre Ausdrücke verwendet. Da dieses eine Art Sprache ist, die selber den Backslash verwendet um Sonderzeichen zu escapen, Vorlage dies auch tut, muß dann jedes für das Pattern gedachte \ durch \\\\ ersetzt werden, Vorlage macht daraus \\ und der Pattern-Parser dann den gewünschten einen. Der letzte Parameter ist hingegen kein Muster, sondern der Text in den das ersetzt werden soll.

Für die Verwendung im Ersetzungstext sind folgende Regeln definiert um auf die Mustertreffer oder Submustertreffer zuzugreifen (die Zeichenfolgen werden dabei durch den entsprechenden Trefferanteil ersetzt):

$& gesammten Treffer einfügen (eigentlich auch $0, aber das ist obsolet)
$` Text vor dem Treffer einfügen
$ Text nach dem Treffer einfügen
$i Trefferanteil des i-ten Subpatterns einfügen (0<i<Anzahl der Subpatterns)

Soll eine solche Zeichenfolge nicht ersetzt werden, so muß sie mit dem Backslash escaped werden.

Parameter

txt Zu durchsuchender Wert.
rexp Regulärer Ausdruck dessen Auftreten ersetzt werden soll.
repl Wert der für die Treffer des Musters eingesetzt werden soll.

Beispiel

$s='Einheit Ziel ist überladen. Ziel hat keine Kapazitäten mehr frei'
$s2=change($s,'Ziel',unit.Name)

Angenommen die aktuelle Einheit trägt den Namen 'Weihnachtsgnom', $s2 enthält dann danach 'Einheit Weihnachtsgnom ist überladen. Weihnachtsgnom hat keine Kapazitäten mehr frei'.

Referenzen

after(), before(), crop(), match(), Reguläre Ausdrücke

Revision 05 Apr 2005

Page design, graphics and contents (c) copyright 1999-2004
by S.Schümann and contributing authors