Korrektur eines Strings
Korrektur eines Strings
Hallo,
ich suche eine einfache Möglichkeit, um den Text eines Strings zu ändern.
Beispiel:
Stringvorgabe$ = "Rächts abbiegen"
; (Rächts in 'e' ändern)
Blitzer
ich suche eine einfache Möglichkeit, um den Text eines Strings zu ändern.
Beispiel:
Stringvorgabe$ = "Rächts abbiegen"
; (Rächts in 'e' ändern)
Blitzer
Re: Korrektur eines Strings
Das Beispiel auf Seite 1466 in der Hilfe lautet:
Als Textbeispiel hätte auch eine Handynummer herhalten können, die korrigiert werden sollte.
Ein einfaches Lösungsbeispiel reicht mir.
Ich brauche nichts suchen oder gleiches zu ersetzen, sondern nur ein 'e' gegen ein 'ä' an zweiter Position zu tauschen.String \ $ = ReplaceString ( String$ , StringToFind$ , Replacement String$ [ , Mode [ , StartPosition [ , bOccurrences ]]])
Als Textbeispiel hätte auch eine Handynummer herhalten können, die korrigiert werden sollte.
Ein einfaches Lösungsbeispiel reicht mir.
Re: Korrektur eines Strings
Hallo meinst Due vielleicht so?
Grüße
Code: Alles auswählen
Define Text.s
Define Pos.i
Define TextInsert.s
Define pt.i,pi.i,li.i
#soc=2 ; für jedes Zeichen werden 2 Bytes im Speicher belegt - unciode -
; KOMOFRTABEL
Text="Rächts"
TextInsert="e"
li=Len(TextInsert)
pos=2
If Len(text)-pos+1>=li
pt=(pos-1)*#soc+@text
pi=@TextInsert
While li>0
PokeC (pt,PeekC(pi))
pt+#soc
pi+#soc
li-1
Wend
EndIf
Debug text
;EINFACH
Text="Rächts"
pos=2
pt=(pos-1)*#soc+@text
PokeC (pt,Asc("e"))
Debug text
Re: Korrektur eines Strings
Hallo,
zur ergänzung in meinen Beispiel könnte man ansteller einer schleife natürlich ein einfaches Copymemory machen.
zur ergänzung in meinen Beispiel könnte man ansteller einer schleife natürlich ein einfaches Copymemory machen.
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Korrektur eines Strings
Code: Alles auswählen
Stringvorgabe$ = "Rächts abbiegen"
ReplaceString(Stringvorgabe$, "ä", "e", #PB_String_InPlace, 2, 1)
Debug Stringvorgabe$
Code: Alles auswählen
Stringvorgabe$ = "Rächts abbiegen"
Debug Left(Stringvorgabe$, 1) + "e" + Mid(Stringvorgabe$, 3)
Code: Alles auswählen
Structure Strings
StructureUnion
s.s{100} ;muß FixString sein
c.w[0] ;direkter Zugriff auf den String im Memory via Index ab null, !! Unicode x64 !!
EndStructureUnion
EndStructure
Stringvorgabe$ = "Rächts abbiegen"
text.Strings
text\s = Stringvorgabe$
text\c[1] = Asc("e")
Debug text\s
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
- 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:
Re: Korrektur eines Strings
Zwei Fragen:Blitzer hat geschrieben: ↑08.08.2022 13:05 Das Beispiel auf Seite 1466 in der Hilfe lautet:
Ich brauche nichts suchen oder gleiches zu ersetzen, sondern nur ein 'e' gegen ein 'ä' an zweiter Position zu tauschen.String \ $ = ReplaceString ( String$ , StringToFind$ , Replacement String$ [ , Mode [ , StartPosition [ , bOccurrences ]]])
Als Textbeispiel hätte auch eine Handynummer herhalten können, die korrigiert werden sollte.
Ein einfaches Lösungsbeispiel reicht mir.
1. Von welcher PB-Hilfe redest du? Weil da gibt es doch keine Seitenzahlen.
2. Was genau ist jetzt das Problem mit ReplaceString? Wie willst du den Text denn sonst korrigieren? Du brauchst ja eine Regel, nach der du einen Fehler findest und beseitigst. Und wenn es um Wörter geht, dann wäre ein Wörterbuch sinnvoll und die Levenshtein-Distanz um herauszufinden, ob ein Wort falsch ist und wie man es am sinnvollsten korrigiert.
Re: Korrektur eines Strings
Also erst mal Dank an alle. Ich finde es bemerkenswert, gleich 4 Lösungen in so kurzer Zeit angeboten zu bekommen.
Da scheint was brauchbares dabei zu sein. Früher im letzten Jahrhundert, da gab es u.a. eine Programmiersprache, die zum direkten Ersetzen von Stringinhalten einen Befehl bereitstellte. Also ähnlich wie, ersetze ab Position x den String mit "aBcD" (hier 4-Stellen). ReplaceString gibt es als Befehl auch in AppGameKit oder auch anderen Sprachen.
@NicTheQuick
zu 1)
PureBasic Reference Manual 6.00, vom 01.07.2022, geöffnet mit XReader 3.4.3 unter Linux. Die Seitenzahlen werden automatisch gezählt.
zu 2)
Ich werde mein Problem kurz umschreiben. In einer Anwendung werden zum Beispiel 100 Zustände in Form von Zeichen, bzw. Sonderzeichen in einem String abgelegt. Diese Zustände können sich ändern und müssen inhaltlich im String angepasst werden.
Es kann auch vorkommen, daß 2 Zustände an unterschiedlichen Positionen getauscht werden müssen.
Ein ganz abstraktes Beispiel: Du spielst Karten und nur dein Blatt auf der Hand muss neu gemischt werden.
Da scheint was brauchbares dabei zu sein. Früher im letzten Jahrhundert, da gab es u.a. eine Programmiersprache, die zum direkten Ersetzen von Stringinhalten einen Befehl bereitstellte. Also ähnlich wie, ersetze ab Position x den String mit "aBcD" (hier 4-Stellen). ReplaceString gibt es als Befehl auch in AppGameKit oder auch anderen Sprachen.
@NicTheQuick
zu 1)
PureBasic Reference Manual 6.00, vom 01.07.2022, geöffnet mit XReader 3.4.3 unter Linux. Die Seitenzahlen werden automatisch gezählt.
zu 2)
Ich werde mein Problem kurz umschreiben. In einer Anwendung werden zum Beispiel 100 Zustände in Form von Zeichen, bzw. Sonderzeichen in einem String abgelegt. Diese Zustände können sich ändern und müssen inhaltlich im String angepasst werden.
Es kann auch vorkommen, daß 2 Zustände an unterschiedlichen Positionen getauscht werden müssen.
Ein ganz abstraktes Beispiel: Du spielst Karten und nur dein Blatt auf der Hand muss neu gemischt werden.
- 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:
Re: Korrektur eines Strings
Aha, ich verstehe.
Dann würde ich die letzte Version von hjbremer präferieren.
Und dazu habe ich nur einen Verbesserungsvorschlag. Diese Zeile
kann einfach so geschrieben werden:
Aber das funktioniert so trotzdem nur mit einzelnen Zeichen und keinen längeren Strings.
Dann würde ich die letzte Version von hjbremer präferieren.
Und dazu habe ich nur einen Verbesserungsvorschlag. Diese Zeile
Code: Alles auswählen
text\c[1] = Asc("e")
Code: Alles auswählen
text\c[1] = 'e'
Re: Korrektur eines Strings
Ja, danke für die Anregungen.
@hjbremer
Etwas optimiert ...
Stringvorgabe$ = "Rechts abbiegen" : Zifferpos = 7
Debug Left(Stringvorgabe$, Zifferpos - 1) + "+" + Right(Stringvorgabe$, Len(Stringvorgabe$) - Zifferpos)
In der Kürze liegt die Würze... Problem gelöst
Blitzer
@hjbremer
Etwas optimiert ...
Stringvorgabe$ = "Rechts abbiegen" : Zifferpos = 7
Debug Left(Stringvorgabe$, Zifferpos - 1) + "+" + Right(Stringvorgabe$, Len(Stringvorgabe$) - Zifferpos)
In der Kürze liegt die Würze... Problem gelöst
Blitzer