Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sonderzeichen in text finden (https://www.delphipraxis.net/52794-sonderzeichen-text-finden.html)

emteg 3. Sep 2005 23:42


Sonderzeichen in text finden
 
Ich möchte ein kleines programm schreiben, dass eine textdatei einliest und dabei herausfindet, in welcher sprache der text geschrieben ist. Dies soll durch das suchen nach zeichen geschehen, die nur in der entsprechenden sprache vorkommen. Vorerst mal mit den Sprachen Deutsch, Englisch, Französisch, Spanisch, Italienisch und Türkisch.

Beispiel:
"ß" gibts nur in Deutsch
"é" gibts in Französchisch, Spanisch, Italienisch
"ñ" gibts nur in Spanisch

Am ende wird geschaut, welche zeichen vorkommen und welche sprachen daraus in Frage kommen ("der text ist wahrschienlich deutsch (D: 67%, E: 12%, S: 3%)").

Jetzt ist meine Frage, was der beste weg ist, sich die entsprechenden zeichen aus dem text zu suchen. Der Suchalgorithmus soll quasi alles von A-Z, 0-9 und alle Satzzeichen ignorieren und den rest auf die sprache prüfen.
Kurz: wie suche ich nach allem außer A-Z, 0-9 und satzzeichen?
Sollte ich die ausgeschlossenen Zeichen in einen array packen, etwa in der art:
(Pseudo code)
Delphi-Quellcode:
ignored:=false;
for i:=0 to 30 do
begin
  if zeichen=Ausgeschlossen[i] then
    ignored:=true;
end;
if ignored=false then
  ListBox.Items.Add(zeichen);
Upper/Lowercase ist klar, eventuell mache ich mir auch eine Lern routine, bei der ich einen text einlese und dann sage "das war spanisch".
Außerdem frage ich mich, ob es eventl. probleme mit verschiedenen zeichensätzen geben könnte :gruebel:

yankee 3. Sep 2005 23:56

Re: Sonderzeichen in text finden
 
Naja, es gibt da mehrere Möglichkeiten. Alleridngs wäre es schon gut zu wissen, ob du die Textdatei zuerst in eine memo lädst oder direkt auswertest. Aber zu den Möglichkeiten:

1. Du gehst den Text Zeichenweise durch (besonders praktisch, wenn du die Datei direkt von der Platte einliest, weil du die Datei dann gleich Zeichenweise einlesen kannst). Dann entscheidest du bei jedem Zeichen, welche Sprache das ist. Wobei du auch mehrfachvergebeungen einplanen muss. Also es gibt Sonderzeichen, die Französisch und Spanisch sein können. Naja, jedenfalls hast du dann einen array of Cardinal und jedes arrayitem steht für eine Sprache. Und bei jedem arrayitem, in dessen Sprache das Zeichen vorkommt, erhöhst du die Zahl um 1.

2. Du versuchst mit Hilfe von pos() die Menge von Zeichen zu ermitteln. Alleridings bezweifel ich, dass das schneller ist...

Ok, waren doch nur 2 Möglichkeiten, die mir gerade so eingefallen sind.

Du musst dann alleridng noch bedenken, dass, wenn in einem Text garkeine Sonderzeichen sind, dieser wahrscheinlich englisch ist und so Sachen...

Christian Seehase 4. Sep 2005 01:33

Re: Sonderzeichen in text finden
 
Moin emteg,

welche Texte willst Du denn überprüfen?
Ich kann mir nämlich denken, dass Dein Verfahren durch fremdsprachliche Zitate oder auch Eigennamen stark verfälscht wird.

Zitat:

Zitat von emteg
Außerdem frage ich mich, ob es eventl. probleme mit verschiedenen zeichensätzen geben könnte

Kann es bestimmt, da allein bei 8-Bit Zeichensätzen nur die Zeichen bis 127 festgelegt sind, darüber nicht.


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