![]() |
Wortanfänge in Großbuchstaben
In einem String, der aus mehreren Wörtern besteht, soll jedes Wort mit einem Großbuchstaben beginnen, wie es bei englischsprachigen Metadaten von Musikstücken üblich ist (Titel, Interpret, Album usw.). Gibt es da irgendetwas 'Fertiges' oder muss ich das 'zu Fuß' erledigen? Ein Ansatz wäre, über alle Zeichen eines Strings zu iterieren und das erste Zeichen und alle Zeichen, die auf ein Leer- oder Interpunktionszeichen folgen, durch Großbuchstaben zu ersetzten. Wahrscheinlich habe ich da noch den einen oder anderen zu berücksichtigenden Fall vergessen.
Oder kennt noch jemand eine bessere Lösung? Gruß LP |
AW: Wortanfänge in Großbuchstaben
Hallo,
die Infos in diesem Thread könnten Dir evtl. weiterhelfen: ![]() Gruß Frank |
AW: Wortanfänge in Großbuchstaben
Zitat:
Delphi-Quellcode:
Auf den ersten Blick scheint alles zu funktionieren. Die erste Zeile musste ich auskommentieren, weil es in dem vorgesehenen Anwendungsgebiet keine Großbuchstaben an falscher Stelle gibt, die ersetzt werden müssen. Man sollte annehmen, dass das für das Ergebnis unerheblich ist. Aber in einem der Teststrings (s.o.) kamen römische Zahlen vor, die normalerweise mit Großbuchstaben dargestellt werden, und bei denen - unschön, aber logisch - nur das erste Zeichen groß geschrieben wurde. So scheint die Routine brauchbar zu sein, aber aus alter Erfahrung weiß ich, dass es bestimmt noch Fälle gibt, die nicht berücksichtigt sind. Warten wir's ab :?
const
StdWordDelims: TSysCharset = [#0..' ',',','.',';','/','\',':','''','"','`','(',')','[',']','{','}']; function AnsiProperCase(const S: string; const WordDelims: TSysCharSet): string; var P,PE : PChar; begin //Result:=AnsiLowerCase(S); Result:= S; P:= PChar(pointer(Result)); PE:= P + Length(Result); while (P < PE) do begin while (P < PE) and CharInSet(P^, WordDelims) do inc(P); if (P < PE) then P^:= UpCase(P^); while (P < PE) and not (CharInSet(P^, WordDelims)) do inc(P); end; end; ShowMessage(AnsiProperCase('Suite No. 2 for Orchestra (1921 version): IV. Comodo',StdWordDelims)); //liefert: 'Suite No. 2 For Orchestra (1921 Version): IV. Comodo' Gruß LP |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz