Automatisch groß nach bestimmten Zeichen

Heya Leute,

Scheinbar ist das mit den Aktionen ja ein sehr potentes Feature... wenn man damit umzugehen weiß :wink:
Sonderlich gut bin ich nicht mit so etwas. Immerhin hab ich's irgendwie hinbekommen, dass alle meine Dateien in allen Tag-Feldern alle Wörter mit einem großen Anfangsbuchstaben versehen.

Leider hat das allerdings auch dazu geführt, dass hinter gewissen Zeichen der Erstbuchstabe des folgenden Wortes nun klein geschrieben wird. z.B. "(special Edition)" statt "(Special Edition)", oder "Middle-earth" statt "Middle-Earth".
Hätte von euch einer eine Idee, ob man eine Aktion basteln könnte, die bewirkt, dass der erste Buchstabe hinter dem Zeichen "(" immer groß geschrieben wird? (für das Zeichen "-" dürfte es ja ebenso funktionieren).

Danke im Voraus!

Hi,

ich verwende dafür die Aktion "Tag-Feld formatieren" für z.B. das Feld ALBUM mit folgenden Formatstring:

$if(%album%,$if($neql($regexp(%album%,'(^|\.|-| | ''''|\(|\[|\{)\l+\b',),%album%),$caps2($regexp(%album%,(\s''\l),\U$1),'\.-\(\[\{ '),%album%),)

Dadurch werden alle Zeichen, die auf .,-, ,', ',(,[, oder { folgen, groß geschrieben. Das geht bestimmt auch eleganter aber es funktioniert.

Siehe Mp3tag Manual ...
http://help.mp3tag.de/options_format.html#case
... man kann die Zeichen definieren, die als Wortbeginn wirken sollen.
Im deutschen Mp3tag Manual findest du deinen Fall beschrieben.

DD.20140511.1119.CEST

Zu diesem Beispiel habe ich Kommentare und Fragen.

Beispiel für $caps2 ...

$caps2('abc def (ghi [jkl {mno ,pqr .st -uvw_xyz äöü',' ([{,.-') ==> 'Abc Def (Ghi [Jkl {Mno ,Pqr .St -Uvw_xyz Äöü'

Was bewirkt dieser Ausdruck?
$regexp(%album%,(\s''\l),\U$1)

DD.20140811.1313.CEST

Knabbakeks: Danke! Das sieht ja mächtig aus. Ich versuche erstmal die simple Variante und schaue, ob's das auch tut ^^ Ich möchte das auch für alle Felder haben, nicht nur Album. Und für ' möchte ich's nicht haben, sonst hat man ja Sachen wie "Peter'S Ball", oder?

@ DetlevD: Aah, danke, Case Conversion und dort vor allem der Punkt "Words begin after any of" (Wortbeginn nach) ist scheinbar genau das, was ich brauche. Allerdings, wie schreibe ich die Zeichen alle in das Feld rein? Ich möchte ja mehrere Zeichen da eintragen; wie trennte ich die voneinander? Und wie ist es mit einem Leerzeichen, macht man da auch einfach nur ein Leerzeichen, oder muss man dafür einen bestimmten Ausdruck verwenden?

Alle zeichen hintereinander weg. Da immer nur ein Zeichen gilt (und nicht etwa Minus-Leerzeichen), ist kein Trenner notwendig.

Alles klar, vielen Dank!

Ich habe mir den String vor Jahren aus diversen Beispielen aus diversen Beiträgen aus diesem Forum zusammmengebastelt und ihn an meine Bedürfnisse angepasst. Seitdem verwende ich ihn ohne mich noch groß mit dem Code auseinandergesetzt zu haben. Wie gesagt er funktioniert, aber es geht bestimmt auch eleganter.
Ich glaube den Ausdruck habe ich damals eingebaut um so etwas wie z.B.
"...very 'eavy ...very 'umble" in diese Schreibweise "...Very 'Eavy ...Very 'Umble" umzuwandeln. Also Groß nach einem einzelnen Anführungszeichen welches auf ein Leerzeichen folgt. Wobei eben so etwas wie "Peter'S Ball" nicht vorkommen soll. Das hab' ich mit dem zweiten Parameter von $caps2 so nicht nicht hinbekommen.

Hallo zusammen,

ich versuche seit einiger Zeit vergeblich die Schreibweise in jedem Terminus/Wort das "Mc...." enthält nach dem "Mc" immer auf groß zu stellen. Bisher ändert sich durch meine Tag-Einstellungen immer die Großschreibung nach dem Mc auf klein, also z.B. -> Mccallum anstatt McCallum.
Ich habe das bisher in den Aktionsgruppen unter Schreibweise ändern versucht, aber bisher keine Syntax gefunden, die speziell die Wieder-Kleinschreibung verhindert bzw. die Großschreibung nach dem Ausdruck "Mc" etabliert.

Irgendwelche Vorschläge hierzu?

Da Sprache nicht logisch ist, ist dies einer von den einzeln zu behandelnden Sonderfällen.
Ich würde eine Aktion vom Typ "Ersetzen mit regulärem Ausdruck" anwenden.
Suchstring: Mc(.)
Ersetzen: Mc\u$1

Das macht aus jedem Buchstaben nach Mc einen Großbuchstaben.

Wow, vielen lieben Dank für die schnelle (und funktionierende) Hilfe. : )

D.h. um es auch technisch zu verstehen: \u$1 steht für: in diesem Wort nach dem Mc alles großschreiben, richtig?

Wo finde ich diese Befehle in der Mp3Tag-Online-Hilfe?

Das \u wirkt wie der Script-Befehl $upper, bei dem der erste Buchstabe eines Worts groß geschrieben wird. Da hier das "Wort" nur 1 Buchstabe ist, wird der groß geschrieben.

Mehr Hilfe zu regulären Ausdrücken und Syntax gibt es hier:
http://help.mp3tag.de/options_format.html#regexp

... ist so gesagt nicht korrekt, weil ... gemäß "Perl Format String Syntax" ...

\u Causes the next character to be outputted, to be output in upper case.
\U Causes all subsequent characters to be output in upper case, until a \E is found.

Der Mp3tag Funktionsaufruf ...

$upper('text')

==> TEXT

... wirkt wie ...

$regexp('text','.*','\U$0')

==> TEXT

... anders dagegen ...

$regexp('text','.*','\u$0')

==> Text

DD.20150814.1323.CEST