Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umlaute erkennen (https://www.delphipraxis.net/12775-umlaute-erkennen.html)

mandumoal 3. Dez 2003 21:31


Umlaute erkennen
 
Hallo!

Hättet ihr eine Idee wie man relativ oder ganz zuverlässig Umlaute erkennen kann.
Also zum Beispiel aus eine Stringlsit jeden Eintrag einzeln überprüfen ob da ein Umlaut drin ist der nicht als Umlaut geschrieben ist.

Delphi-Quellcode:
Abaenderung -> Abänderung
ueberpruefen -> überprüfen
...
also aus ae oe ue halt ä ö ü machen.

Aber was gibt es für Kriterien nach denen man feststellen kann ob die Zeichenfolge ein Umlaut sein soll?

mfg mandumoal

Stinger 3. Dez 2003 21:40

Re: Umlaute erkennen
 
Du kannst ja mit Pos einen String nach bestimmten Zeichen durchsuchen, z. B. i := Pos(ae, String) gibt die Position an der sich ae befindet in i wieder (genauer gesagt die Position von a aus ae).

Mit delete löscht du dann ae und fügst mit insert den gewünschten umlaut ein.

czapie 3. Dez 2003 22:41

Re: Umlaute erkennen
 
Prinzipiell so wie schon gesagt, und dann guckst du für jedes Zeichen, ob sein Ascii-Wert
einem Umlaut entspricht:
129 = ü
132 = ä
142 = Ä
148 = ö
153 = Ö
154 = Ü

Ja und dann eben ersetzten.

Czapie.

Wormid 3. Dez 2003 22:45

Re: Umlaute erkennen
 
Zitat:

Zitat von mandumoal
Aber was gibt es für Kriterien nach denen man feststellen kann ob die Zeichenfolge ein Umlaut sein soll?

Eigentlich sehe ich in dem Zitat die Frage... es geht gar nicht um die technische Realisierung, sondern die Frage lautet: Ist jedes "ae", was ich finde eigentlich ein "ä", oder muss es in diesem oder jenem Fall "ae" bleiben...

Und das ist eine Frage, die ich nicht beantworten kann... Gibts hier nen Deutschlehrer, oder so? :stupid:


Gruß

Wormid

MyRealName 4. Dez 2003 10:18

Re: Umlaute erkennen
 
Bsp.: Alphaedition würde dann Alphädition werden :wall:

obwohl, wäre bestimmt witzig, mach mal... :mrgreen:

mandumoal 4. Dez 2003 16:37

Re: Umlaute erkennen
 
Zitat:

Zitat von Wormid
Zitat:

Zitat von mandumoal
Aber was gibt es für Kriterien nach denen man feststellen kann ob die Zeichenfolge ein Umlaut sein soll?

Eigentlich sehe ich in dem Zitat die Frage... es geht gar nicht um die technische Realisierung, sondern die Frage lautet: Ist jedes "ae", was ich finde eigentlich ein "ä", oder muss es in diesem oder jenem Fall "ae" bleiben...

genau darum geht es!
Danke Wormid!

Aber eine Lösung bräuchte ich noch...
zumindest ein Ansatz wäre nett...

deusmac 4. Dez 2003 17:33

Re: Umlaute erkennen
 
So wie ich das sehe sind direkt an einem Umlaut immer vorne und hinten konsonanten. Allerdings ist das beim Wort Alphaedition genau so. Das sind aber auch zwei Wörter. Meines wissen fogen in normalen Wörtern nie Vokale außer u (Häuschen Mäuschen etc.) auf Umlaute. Ich glaube man kannn diesen Katalog von regeln noch weiterspinnen - das willst du aber nicht umsetzten. Eine möglichkeit ist vielleicht noch das ganze an ne Art Duden ranzuhängen und dann immer alle ae's zu ersetzten und dann nachzuschauen obs das Wort gibt. Allerdings weiß ich nicht wie so was und deshalb halt ich mich mit weitern Tipps jetzt zurück.

choose 5. Dez 2003 08:29

Re: Umlaute erkennen
 
Zitat:

Zitat von deusmac
[...] Meines wissen fogen in normalen Wörtern nie Vokale außer u (Häuschen Mäuschen etc.) auf Umlaute. [...]

Archäologie?

@mandumoal: Vielleicht könntest Du einmal einen Blick auf die Theorie hinter Silbentrenner-Algorithmen werfen? Leider kann ich Dir keine Referenz hierzu geben (TeX vielleicht?).

Tim.exe 5. Dez 2003 08:41

Re: Umlaute erkennen
 
Vielleicht hilft dir das:

Delphi-Quellcode:
//In Memo1 den Originaltext einladen...

function OptText(s:widestring):widestring;
begin

  s := StringReplace(s, 'Ä', 'Ae;', [rfReplaceAll]);
  s := StringReplace(s, 'ä', 'ae;', [rfReplaceAll]);

  s := StringReplace(s, 'Ö', 'Oe;', [rfReplaceAll]);
  s := StringReplace(s, 'ö', 'oe;', [rfReplaceAll]);

  s := StringReplace(s, 'Ü', 'Ue;', [rfReplaceAll]);
  s := StringReplace(s, 'ü', 'ue;', [rfReplaceAll]);

Result := s;
end;


//In Memo2 wird der geänderte Text dargestellt:
procedure TForm1.Button1Click(Sender: TObject);
begin
        memo2.Text := OptText(memo1.Text);
end;

Treffnix 5. Dez 2003 08:47

Re: Umlaute erkennen
 
Ich bin sicher, dass es keine Möglichkeit gibt anhand von Rechtschreibregeln sicher herauszufinden, ob ein ae nun ein ae oder ein ä sein muss. Dazu ist die deutsche Sprache viel zu komplex. Hinzu kommen zusammengesetzte Wörter, wie auch schon genannte, die sich auch noch über Regeln hinwegsetzen. Mit den hier genannten ( aber leider auch an den Haaren herbeigezogenen, sorry ) Regeln würdest du vielleicht auf eine Trefferquote von 60 - 70 % kommen. Aber mehr durch Zufall als durch alles andere...
Die einzige Möglichkeit wäre der Vergleich mit einem gespeichertem Wörterbuch. :|


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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