Seite 1 von 1

StringReplace + Frage zu Functions()

Verfasst: 13.03.2005 22:33
von OptimusPrime
Hallo,

StringReplace ersetzt ja alle vorkommenden Zeichen oder Zeichenketten innerhalb eines Strings, wie aber ersetze ich Zeichen aber nur einmal ab einer bestimmten Position, bzw. wie ersetze ich ein Zeichen an einer bestimmten Position, egal was an dieser Stelle im String steht ?

Bsp:
"hallo" - nur das erste "l" mit einem "k" ersetzen = "haklo"
"hallo" - position 2 ersetzen mit "k", egal ob dort nun ein "a" oder sonst etwas steht.

Eine andere Frage habe ich zu den Prozeduren,
warum heissen die nicht function() ?
Das ist doch in Basic eiegntlich so übrlich, dachte ich immer
und kenne das auch so von Amiga-Basic.

Procedure errinnert mich immer irgendwie an Pascal... brrrrr

mfg

Verfasst: 13.03.2005 22:45
von zigapeda
Das mit den Proceduren und function() weiß ich nicht aber das mit dem ersetzen. Wenn du die Zeichen vor dem 1. l in einer Variable speicherst also "Ha" und die Zeichen nach dem 1. l in einer Variable speicherst also "lo" dann willst du das 1. l mit einem k ersetzen also

Code: Alles auswählen

neueswort = teil1 + "k" + teil2

Verfasst: 13.03.2005 23:14
von NicTheQuick
Das ist jetzt vielleicht nicht ganz Anfänger-konform, aber ich würde das durch direkte Stringspeicher-Manipulation machen, also auch mit Pointern. Hier muss man als Parameter immer den Pointer (@) der Strings angeben. [c]*String[/c] ist der zu veränderte String und das erste Zeichen in [c]*CharToReplace[/c] wird verwendet um es mit dem in [c]Position[/c] angegebenen Zeichen in [c]*String[/c] zu ersetzen.

Code: Alles auswählen

Procedure ReplaceOneChar(*String.BYTE, *CharToReplace.BYTE, Position.l)
  If *String And *CharToReplace And Position > 0
    Position - 1
    While *String\b And Position
      *String + 1
      Position - 1
    Wend
    *String\b = *CharToReplace\b
  EndIf
EndProcedure

String.s = "Hallo"

CharToReplace.s = "k"

ReplaceOneChar(@String, @CharToReplace, 3)

Debug String
Bei weiteren Fragen, frag einfach.

Verfasst: 13.03.2005 23:19
von zigapeda
Also ich hätte das so gemacht:

Code: Alles auswählen

teil1$ = Mid(wort$,1,2)
teil2$ = Mid(wort$,3,2)
neueswort$ = teil1$ + "k" + teil2$

Verfasst: 13.03.2005 23:33
von NicTheQuick
Das ist dann aber wohl doch etwas zu speziell.

Versuch das ganze dann noch etwas allgemeiner zu machen, also z.B. als Funktion mit mehreren Parameter, damit man alles richtig einstellen kann, und schon kann man das auch richtig verwenden.

Meine Funktion ist dann zwar sicherlich noch etwas schneller, aber was solls. :allright:

Verfasst: 13.03.2005 23:47
von zigapeda
Mit Parametern würde das dann so aussehen:

Code: Alles auswählen

teil1$ = Mid(wort$,1,pos)
teil2$ = Mid(wort$,pos + 1,len(wort$))
neueswort$ = teil1$ + zeichen$ + teil2$
die Variablen müssten dann vorher festgelegt werden