Italia
Foro

Großbuchstaben in einem Textstring suchen

 

Thomas
Freier
Ich habe mal eine Frage, wie ist das folgende Problem besser (schneller) zu lösen:
In einer Textdatei, erzeugt von einer PDF durch Adobe oder PDFtoText.exe, werden Worte zusammengezogen. Diese würde ich gerne wieder trennen, wenn innerhalb eines Wortes Großbuchstaben auftauchen. Ist eine Vorbereitung per die Sprachausgabe und es hört sich nicht gut an, wenn vor einem Hauptwort kein Leerzeichen ist. Meine bisherige Lösung:
KompilierenMarkierenSeparieren
Zusammengefasste Wörter bei einem Großbuchstaben trennen
Dim$ 500
declare this$, insideThis$, Nr_B%, Nr_B1%, Such$ , Such%, Edit$, N_Strg%, Ende%

Proc isOneInside   von Michael Wodrich

    Syntax: isOneInsice( this$, insideThis$ )
    Ist eines der Zeichen in this auch in insideThis enthalten?
    this wird als eine Aufzaehlung von einzelnen Zeichen betrachtet.
    Parameters this$, insideThis$
    Declare Ok%

    WhileLoop Len(this$)

        If InStr(Mid$(this$, &loop, 1), insideThis$)

            If &Loop>Nr_B1%

                Ok% = 1
                Nr_B% = &Loop
                BREAK

            EndIf

        EndIf

    EndWhile

    Return Ok%

EndProc

cls
Edit$=WastutLübeckaufdemReisemarktHeute ohneTourismusmanager
Print Edit$
insideThis$=ABCDEFGHIJKLMNOPQRSTUVWXYZÄÜÖ
..............Alle Worte trennen und speichern

WhileLoop 50

    List$ &Loop = Substr$(Edit$,&Loop, )

    IF List$(&Loop) =

        N_Strg%= &Loop-1
        Break

    EndIf

EndWhile

.............ist innerhalb eines Wortes ein Großbuchstabe?

WhileLoop n_Strg%

    Such$= List$(&Loop)
    print such$
    this$= right$(Such$,len(Such$)-1)
    Nr_B1% = 0
    ..........................suchen ab Wortanfang ohne 1. Buchstaben

    WhileLoop 10

        if isOneInside( this$, insideThis$ )

            Such$= Ins$( ,Such$,(Nr_B% + 1)) gefunden und Leerzeichen vor Großbuchstaben
            Nr_B1% = Nr_B% + 1                 einsetzen
            this$= right$(Such$,len(Such$)-1)

        Else

            Break

        endif

    Wend

    print such$
    Print
    List$ &Loop = Such$

EndWhile

Print
.............String neu zusammen setzen
Edit$ =

WhileLoop n_Strg%

    Edit$ = Edit$ + List$(&Loop)+

EndWhile

WaitKey
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2007  
 




Jörg
Sellmeyer
So zum Beispiel:
KompilierenMarkierenSeparieren
ab XProfan10
Declare t$
Var Edit$=WastutLübeckinÖstereichaufdemReisemarktHeuteohneTourismusmanager
Print Edit$

While Match$(([a-z|äöü])([A-Z|ÄÖÜ]),Edit$) >

    t$ = $Match
    Edit$ = Translate$(Edit$,t$,Left$(t$,1) +   + Right$(t$,1))

Wend

Print Edit$
put

KompilierenMarkierenSeparieren
Auf die gleiche Weise kannst Du noch die ganzen Präpositionen und Bindewörter freistellen und Du hast schon einen halbwegs lesbaren Text. Wenn Du dann noch alle Möglichkeiten von sein und haben sowie einige Basisverben (z.B. machen) erledigst...
Achja, die Artikel noch! Mit dem richtigen Match$-Befehle geht das alles in einer Schleife.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.11.2007  
 




Thomas
Freier
@ Jörg, DANKE, sieht kurz und gut aus.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2007  
 




Jörg
Sellmeyer
Thomas Freier
@ Jörg, DANKE, sieht kurz und gut aus.


Es ist kurz und gut
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.11.2007  
 




Jörg
Sellmeyer
Hallo Thomas,
Ich antworte mal hier, dann haben alle was davon:
Trennstriche am Zeilenende lassen sich leicht mit Translate$(Text$,-
,) herausfiltern.
Du kannst Deinen Text sogar gleich in Absätze zerlegen:
KompilierenMarkierenSeparieren
Jetzt hast Du im Prinzip absatzformatierten Fließtext. Den kannst Du jetzt dem Vorleseprogramm trasferimento, oder, wenn Deine Frau gerne selber lesen möchte, in beliebiger Schriftgröße in einem Multiedit unterbringen. Mit eingestelltem automatischem Zeilenumbruch (negativer Wert per Höhe) sollte das dann problemlos lesbar sein. In einem RTF-Control kannst Du es sogar noch beliebig formatieren.
Saluto
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.11.2007  
 



Hm, wäre imho etwas performanter da ohne regexp und ohne schleifen auch mit
KompilierenMarkierenSeparieren
var in$=Hier_die_Funktion_die_den_Text_aus_PDF_liest()
in$=translate$(in$,-
,)
in$=translate$(in$,|,chr$(1))
in$=translate$(in$,!
,!|)
in$=translate$(in$,?
,?|)
in$=translate$(in$,.
,.|)
in$=translate$(in$,
,)
in$=translate$(in$,|,
) ich würde hier wahrscheinlich der Optik halber sogar
angeben, unwichtig...
in$=translate$(in$,chr$(1),|)
23.11.2007  
 




Jörg
Sellmeyer
Obs schneller ist, käme auf einen Versuch an. Meine erste Schleife wird ja auch nur maximal 3mal durchlaufen. Wenn z.B kein ?
im Text vorhanden ist, sogar nur 2mal.
Die zweite Schleife kann man sich sowieso schenken. War ein Denkfehler meinerseits.
KompilierenMarkierenSeparieren
Translate$(Text$,|,
)e>

reicht ja schon.
Womit ich dann bei fünf Zeilen bin und evtl. weniger Durchläufen.
Außerdem finde ich diese RegEx-Sachen irgendwie cool
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
23.11.2007  
 



ok, testen! Steilvorlage per ein TestSkelett: [...]  (einfach in die perfproc das eintragen was zu testen ist)

Wäre doch echt interessant...

Aber der Coolnessfaktor ist tatsächlich unübersehbar.
 
23.11.2007  
 




Thomas
Freier
Toll!!! Ihr seid schneller als der Schall. Vorhin war hier Stille und ich habe mich auf die Cerca nach Software gemacht. Werde die Tips morgen ausprobieren.
Jörg du hast recht, es sind Probleme, die viele interessieren könnten.
 
Gruß Thomas
Windows XP SP2, XProfan X2
23.11.2007  
 




Thomas
Freier
So, ich mußte es doch noch ausprobieren. Entweder mach ich einen Fehler, oder meine Lösung hat die wenigsten.
Anstoß der Aktion: der Versuch, Eine Zeitungsseite als PDF disponibile, sich vorlesen zu lassen. Die ganze Seite ist kein Problem, dass kann Adobe auch. Aber möchte ich nur einen Artikel lesen oder noch einmal vorlesen lassen, so geht das nicht. Und wer möchte schon alle Mostra hören!
In der Anwendung kann das Programm nur circa die Tasten gesteuert werden bis zu Scannen, aber soweit bin ich noch nicht.
Zum Einsatz kommt ein alter Laptop mit 800*600 Auflösung.
Im Anhang auch eine von Adobe erzeugte Textdatei (LN-Adobe.txt). Wobei Adobe eine fehlende Struktur, bei der Zeitung wußten die gar nicht was darunter zu verstehen ist, bemängelt und dann zeilenweise circa mehrere Blöcke den Text erzeugt. Grrrrr!

1.345 kB
Hochgeladen:23.11.2007
Downloadcounter114
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
23.11.2007  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.533 Views

Untitledvor 0 min.
RudiB.26.04.2022
Ostfriesenjack11.08.2021
Georg Teles07.07.2021
Erasmus.Herold09.10.2019
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

Thomas Freier (4x)
Jörg Sellmeyer (4x)
iF (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie