VBS (nicht VB) Zeichen suchen und ersetzen

Folgendes ist meine Situation, ich habe Inhaltsverzeichnisse vorliegen, die ich konvertieren muß.Es sieht also zuerst so aus:
 
HANS TEYE BAKKER: Laudatio . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Books and Articles by GERRIT JAN MEULENBELD . . . . . . . . . . . . 12 

Nun möchte ich zuerst:

  • Suchen nach zwei aufeinanderfolgenden Punkten, die ein Leerzeichen im Anschluß haben und dann von einer Zahl zwischen 1 und 9 gefolgt werden.
  • wenn diese gefunden werden, die (beiden Punkte gefolgt von einem Leerzeichen) ersetzen gegen Komma, Leerzeichen, „Seite“ und wieder Leerzeichen.

Anschliessend:Suchen und ersetzen von zwei aufeinanderfolgenden Punkten. Jetzt alle Absatzmarken gegen ein Semikolon ersetzen. 

So oder ähnlich soll es dann aussehen:
HANS TEYE BAKKER: Laudatio, Seite 1; Books and Articles by GERRIT JAN MEULENBELD, Seite 12;

Erreiche zwar schon einiges mit VBS, bin aber immer noch Einsteiger und für alle Tips dankbar!!

Hallo Jörg,

das müsste mit einer geschickten Kombination des RegExp-Objekts und des Replace-Kommandos gehen. Schau mal hier:

http://msdn.microsoft.com/en-us/library/ms974570.asp…
http://msdn.microsoft.com/en-us/library/k9z80300%28v…

Zwei oder mehr Punkte müssten gefunden werden duch die Regular Expression

\.{2,}

Das kannst du ersetzen durch

, Seite

Zeilenumbrüche findest du mit

\n

Das kannst du durch ein Semikolon ersetzen.

Viel Erfolg und Gruß, Andreas

Ahoi Andreas,
alles in allem dürfte dein Vorschlag in der von Jörg geschilderten Situation funktionieren, nur eine kleine Anmerkung zu folgenden:

Zeilenumbrüche findest du mit
\n

Bei Windows Systemen ist ein Zeilenumbruch für gewöhnlich \r\n, \n ist bei Unix/Linux üblich, bei MacOS hingegen \r.
Sollte also nicht 100%ig klar sein, welche Zeilenumbrüche verwendet werden (weil z.B. das Dokument auf einem anderen PC erstellt wurde, o.ä.) wäre es ggf. besser erst einmal dafür zu sorgen, dass alle Zeilenumbrüche „normalisiert“ werden.
Bei VB/S z.B. dur etwas wie:

sText2=Replace(Replace(sText1,vbCrLf,vbLf),vbCr,vbLf)

sText1 enthält den ursprünglichen Text, bei sText2 sind sämtliche Zeilenumbrüche durch vbLf bzw. \n bzw. 0x0a ersetzt.

1 Like