Hallo,
ich will mit Standard befehlen (left, right … find…) aus einem Textstring die ersten 30 Zeichen und die dann folgenden bis zu ersten Leerstelle extrahieren, also so, daß nicht nach den ersten 30 Zeichen einfach mitten im Wort abgetrennt, sondern erst beim ersten folgenden leerzeichen eine Trennung erfolgt.
Wie baue ich den auf?
Danke
MM
mit Programmierung Allgemein halt.
zähler = 0
dasZeichen = „“
textstring = einlesen_von_text
ende = falsch
endstring = „“
setze textstring leseposition auf anfang
wiederhole solange bis ende gleich wahr
zähler um 1 erhöhen
dasZeichen = lese zeichen von textstring leseposition
wenn zähler grösser 30 dann
wenn dasZeichen gleich leerzeichen dann tu ende = wahr setzen
wenn ende gleich falsch dann füge zu endstring dasZeichen hinzu
wenn ende gleich falsch dann textstring leseposition nach rechts (ein zeichen weiter)
ende wiederhole
ausgabe endstring
// geht glaub ich mit vielen programmiersprache !!!
Das war Humanisch
,
geht mit fast jeder
Hallo Michael!
Ich würde es auf folgende Weise lösen:
length = Len(textstring)
i = 0
Loop
leerstelle = find(" ", Right(textstring, length - i))
i++
Until leerstelle \> 30 Or i \>= length
ausgabe = left(textstring, leerstelle)
Das ganze ist natürlich nur Pseudocode. Das musst du also noch für die von dir gewählte Programmiersprache adaptieren. Weiters habe ich den Code nicht auf „Off-by-one“-Fehler[1] kontrolliert.
mfg
christoph
ich will mit Standard befehlen (left, right … find…) aus
einem Textstring die ersten 30 Zeichen und die dann folgenden
bis zu ersten Leerstelle extrahieren, also so, daß nicht nach
den ersten 30 Zeichen einfach mitten im Wort abgetrennt,
sondern erst beim ersten folgenden leerzeichen eine Trennung
erfolgt.
Hallo Michael,
ich sehe da keine Notwendigkeit einer Schleife aber das kann auch am verwendeten Programm liegen.
In VBA denke ich da an eine Kombination von Left, Mid, Instr.
Aber ob C o.ä. Instr kennt weiß ich nicht. Left und Mid bestimmt *denk*
Welches Programm mit welcher Version willst du den einsetzen?
Oder suchst du eine allgemeine Lösung in Pseudocode?
Gruß
Reinhard
wenn zähler grösser 30 dann
wenn dasZeichen gleich leerzeichen dann tu ende =
wahr setzen
ich gehe natürlich davon aus das immer ein leerzeichen am ende folgt. und frühestens nach 30 zeichen (da die es ja sowieso sein sollten)
aber mal was anderes
du sagst left right find wären die befehle
dann wäre doch
gefundeneposition = find (" " , textstring , start=31, )
ergebnis = left(bis gefundeneposition von textstring)
auch ein funktionierendes konstrukt.
die frage ist was left find right so alles können , bewegen sie ein pointer, oder sind die intelligente substringfunktionen
wie ist das mit dem textstring , hat der immer nach 30 zeichen irgentwann eine leerstelle, gibt es auch weniger als 30 zeichen
etc etc …gibt es irgentein speicherlimit ? oder sind die dateien immer kleiner als der hauptspeicher
dann wäre doch das zusammengefasste werk
ergebnis = left(find (" " , textstring , start=31, ), textstring)
da find mir die array position zurückliefert hehe brauch ich keine minus 1 denn kooler weise will left die position von 1 ab , so ein zufall gell.
Everybody stand back…
… I know regular expressions
Hallo,
ich will mit Standard befehlen (left, right … find…) aus
einem Textstring die ersten 30 Zeichen und die dann folgenden
bis zu ersten Leerstelle extrahieren,
Nachdem du keine Programmiersprache angegeben hast, hier meine Lösung in Perl, die sich aber leicht auf andere Programmiersprachen übertragen lässt, die reguläre Ausdrücke haben:
$string =~ /^(.{0,30}\S\*)/;
say $1;
Grüße,
Moritz