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
StringReplace + Frage zu Functions()
-
- Beiträge: 43
- Registriert: 07.03.2005 16:52
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
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
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.
Bei weiteren Fragen, frag einfach.
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
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$
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
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.
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.
Mit Parametern würde das dann so aussehen:
die Variablen müssten dann vorher festgelegt werden
Code: Alles auswählen
teil1$ = Mid(wort$,1,pos)
teil2$ = Mid(wort$,pos + 1,len(wort$))
neueswort$ = teil1$ + zeichen$ + teil2$