Wie kann man (von einem Text) alle kleingeschriebenen Wörter entfernen?

9 Antworten

  1. öffne die Eingabequelle (File, Webseite, ...). Dazu gibt es Kommandos im Kernel Mode wie "fopen(), new FileReader(), ...".
  2. öffne die Ausgabesenke (File, Webseite, Feld (Array), ...)
  3. identifiziere die Wörter (entweder lesen bis Satzzeichen, Leerschlag, Ziffer, ....). Dies hängt davon ab, was Du unter Wörter verstehst (Ist "Vorreiter-Handschuh" ein Wort, oder sind es zwei? Gilt "Haus42" als Wort oder nicht?). Hier gibt es in vielen modernen Sprachen Trennhilfen wie "split()" oder "regEx".
  4. Entscheide, ob das Wort groß oder Klein ist. Dies geht am besten, indem Du den ersten Buchstaben nimmst. Du kannst natürlich auch das ganze Wort in Kleinbuchstaben verwandeln (viele Sprachen bieten sowas an z. B. toLower() oder toLowercase()) und danach das neue Wort vergleichen. Ist es identisch, waren im Originalwort auch alle Buchstaben klein geschrieben (Dann gilt aber "hAUS" nicht als kleingeschrieben!).
  5. War das Wort klein, so schreibe dies in die Ausgabe.
  6. Wiederhole Schritt 3 - 5, solange noch Wörter zu behandeln sind. Dies ist mit einer Kopf- (bzw. Fuß-) gesteuerten Schleife (while, repeat, ...) möglich.
  7. Schließe die Ein- und Ausgabeströme wieder, damit nichts im RAM-Puffer hängenbleibt.

Mit regex, oder auch so:

String x = "text groß Auto Banane, autobus";

String[] words = x.Split(' ');

Dann in einer for schleife durch gehen und alle kleinen Wörter aus den Array entfernen und stattdessen ein "" Speicher.

Dann wieder alles zusammen joinen.

Inhalt von file.txt:

Wie kann man (von einem Text) alle kleingeschriebenen Wörter entfernen?
egal wie (Word, Internetseite, Java Code, irgendeine Programmiersprache, ein Programm)

Programm:

awk 'gsub(/\y[[:lower:]]*/,"")' file.txt

Ausgabe:

Wie   (  Text)   Wörter ?
  (Word, Internetseite, Java Code,  Programmiersprache,  Programm)

Viel Spass!

Einer1VonVielen 
Fragesteller
 11.02.2018, 17:34

Danke aber kurze frage: Welche Programmiersprache benutzt dein Programmabschnitt? (So gut kenn ich mich nicht aus...)

0
Einer1VonVielen 
Fragesteller
 11.02.2018, 17:55
@andie00

Danke, ich habs versucht, hat aber nicht geklappt. kann sein, dass bei dir etwas fehlt? weil dieses awk hat kein 'gsub' glaube ich... der sagt mir, wenn ich einfach awk eingebe

usage: awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]
0
andie00  11.02.2018, 17:59
@Einer1VonVielen

Welches Betriebssystem nutzt du und welche Version von awk (awk -V)?

Versuchs mal mit gawk anstatt awk

0

Als .txt Datei folgendermaßen:

Du liest die Datei in Java ein und teilst die Wörter mit String.split bei den Leerzeichen, dann kannst du bei String.charAt(0) mit pattern.matches nach regex Ausdruck [A-Z] überprüfen lassen und die Wörter, auf die das zutrifft in eine andere Datei wieder reinschreiben.

Woher ich das weiß:Berufserfahrung – Programmierer

Die einfachste Lösung wäre wohl die Ersetzen-Funktion von Notepad++ (Strg + H), die reguläre Ausdrücke unterstützt. Microsoft Word kann dies evt. auch.

Dieser reguläre Ausdruck sollte alle Kleinbuchstaben finden:

[a-z]

Zum Ersetzen wird eine leere Zeichenkette angegeben.

Roderic  11.02.2018, 23:58
Microsoft Word kann dies evt. auch.

Ja. Kann es.

Seit Version 2010 glaub ich.

0
regex9  12.02.2018, 01:03

Korrektur / Ergänzung des regulären Ausdrucks:

[a-z\u00e4\u00f6\u00fc\u00df]

Die Unicodes stehen für die einzelnen deutschen Umlaute und das ß.

0
regex9  12.02.2018, 12:27

Korrektur 2: Mit diesen regulären Ausdrücken würden Kleinbuchstaben entfernt werden, egal ob sie einem großgeschriebenen Wort zugehörig sind oder nicht.

Ein regulärer Ausdruck dazu könnte so aussehen:

/\s+[a-z\u00e4\u00f6\u00fc\u00df]*/
0