AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wortanfänge in Großbuchstaben

Ein Thema von Maekkelrajter · begonnen am 12. Sep 2019 · letzter Beitrag vom 12. Sep 2019
Antwort Antwort
Maekkelrajter
Online

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#1

Wortanfänge in Großbuchstaben

  Alt 12. Sep 2019, 13:25
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
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Wortanfänge in Großbuchstaben

  Alt 12. Sep 2019, 14:46
Hallo,

die Infos in diesem Thread könnten Dir evtl. weiterhelfen:

Anfangsbuchstaben groß machen

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Maekkelrajter
Online

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wortanfänge in Großbuchstaben

  Alt 12. Sep 2019, 22:12
Hallo,

die Infos in diesem Thread könnten Dir evtl. weiterhelfen:

Anfangsbuchstaben groß machen

Gruß
Frank
Dort stieß ich auf das Stichwort 'AnsiProperCase', was mich zu diesem Code führte:
Delphi-Quellcode:
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'
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

Gruß LP

Geändert von Maekkelrajter (12. Sep 2019 um 22:26 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz