Einschieben einer neuen Zeile


#1

Ich habe etliche Songtexte im Tag UNSYNCEDLYRICS, die ohne Absatz und neue Zeilen hintereinander geschrieben sind.

Ich möchte sie durch eine Aktion in eine lesbarere Form bringen.
Als gemeinsames Kriterium haben sie entweder ". " an der Trennstelle oder ". Großbuchstabe".
Immer wenn diese möglichen Trennzeichen auftauchen soll also hinter dem Punkt ein Zeilenvorschub gesetzt werden. Dabei soll das Leerzeichen auch entfernt werden.

Hat jemand eine Lösung?


#2

Würde dies funktionieren?
$regexp(%unsyncedlyrics%,'\. ','.\r\n')


#3

Ich würde das mit einer Aktion "Ersetzen mit regulärem Ausdruck" machen:

Ausdruck: "\. " (ohne Anführungszeichen)
Ersetzen: .$char(13)$char(10)

Alternativ: $regexp(%unsyncedlyrics%,'\. ','.\r\n')
Die Folge \r\n ist CR (= Carriage Return) LF (= Linefeed).


#4

Ich danke Euch.
Beide Lösungen funktionieren.

Zu dieser Lösung habe ich noch 2 Fragen:

  1. Was bewirken $1 und $2 am Anfang und Ende?
    Ein Test ohne brachte bei mir auch das gewünschte Ergebnis.

  2. Ich hatte es vor meiner Fragestellung mit einer reinen Replace-Aktion versucht: $char(13)($char(10).
    Warum wurde dann $char(13)$char(10) als Text eingefügt?

Leider beseitigt die Lösung doch nicht alle meine Probleme, denn ich habe festgestellt, dass auch eine Vielzahl von Lyricstexten vorliegen, bei denen nicht mal ein Punkt gesetzt wurde. Zwar verzichten diese (weil englischen) Lyricstexte weitgehend Kapitale und setzen Kapitale fast nur beim gewünschten Zeilenanfang ein. Aber auch die normale englische Schreibweise kennt halt Kapitale z.B. bei Eigennamen und "I". Da fehlt dann wirklich ein eindeutiges Kriterium für einen gewünschten Zeilenvorschub.


#5

Das sind Reste eines ursprünglich verwendeten regulären Ausdrucks. Nachdem keine Gruppen im Ausdruck verwendet werden, sind die Referenzen obsolet. Ich hab den Ausdruck oben entsprechend angepasst.

Weil dort keine Skripting-Funktionen möglich sind.